説明
このステートメントは、ステートメントを準備し、後で参照するための名前を指定します。EXECUTE を使用してプリペアドステートメントを実行し、DEALLOCATE PREPARE でそのステートメントを解放できます。
説明
- プリペアドステートメントは現在のセッション内でのみ有効であり、他のセッションには適用されません。セッションが終了すると、作成されたプリペアドステートメントは存在しなくなります。
- ストアドルーチン内で作成されたプリペアドステートメントがグローバルな場合、プログラムの実行が完了しても解放されません。ただし、ストアドプロシージャまたは関数のコンテキスト内のプリペアドステートメントでは、ストアドプロシージャや関数のパラメータやローカル変数を参照することはできません。そうした参照を含む場合、そのステートメントはプログラムの外部で実行できなくなります。
構文
PREPARE stmt_name FROM preparable_stmt
パラメータの説明
パラメータ |
説明 |
|---|---|
| stmt_name | セルフティーティングステートメントの名前を指定します。ステートメント名は大文字と小文字を区別しません。 |
| preparable_stmt | 実行の準備をするSQLステートメントを指定します。このパラメータは文字列リテラルまたはSQLステートメントのテキストを含むユーザー変数でなければなりません。テキストは複数のステートメントではなく、単一のステートメントを表す必要があります。このパラメータにはストアドプロシージャ呼び出しの文字列リテラルやユーザー変数を含めることができますが、ユーザー変数間でデータを受け渡す際には、出力パラメータをそのままユーザー変数に代入することはできません。 |
プリペアドステートメントで使用可能なSQL構文
以下のSQL文をプリペアドステートメントとして使用できます:
ALTER TABLE
ALTER USER
ANALYZE TABLE
CACHE INDEX
CALL
CHANGE MASTER
CHECKSUM {TABLE | TABLES}
COMMIT
{CREATE | DROP} INDEX
{CREATE | RENAME | DROP} DATABASE
{CREATE | DROP} TABLE
{CREATE | RENAME | DROP} USER
{CREATE | DROP} VIEW
DELETE
DO
FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
| LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
GRANT
INSERT
INSTALL PLUGIN
KILL
LOAD INDEX INTO CACHE
OPTIMIZE TABLE
RENAME TABLE
REPAIR TABLE
REPLACE
RESET {MASTER | SLAVE | QUERY CACHE}
REVOKE
SELECT
SET
SHOW BINLOG EVENTS
SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
SHOW {MASTER | BINARY} LOGS
SHOW {MASTER | SLAVE} STATUS
SLAVE {START | STOP}
TRUNCATE TABLE
UNINSTALL PLUGIN
UPDATE
説明
PREPARE ステートメントと CALL ステートメントを併用する場合、EXECUTE ... USING ... の形式でプリペアドストアドプロシージャを呼び出すと、ストアドプロシージャの出力パラメータ値を USING で指定した変数に反映できません。
例
/* SELECTステートメントを使用してプリペアドステートメントを作成 */
obclient> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
Query OK, 0 rows affected
/* ユーザー変数aとbを設定 */
obclient> SET @a = 3;
Query OK, 0 rows affected
obclient> SET @b = 4;
Query OK, 0 rows affected
/* ユーザー変数の値を使用してプリペアドステートメントを実行 */
obclient> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
1 row in set
説明
OceanBaseデータベースは、現在のバージョンではインタラクティブクライアントによる結果の表示をサポートしていません。