説明
このステートメントは、ステートメントを準備し、後で参照するために名前を指定します。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ステートメントを使用してPreparedステートメントを作成する */
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
/* ユーザー変数の値を使用してPreparedステートメントを実行する */
obclient> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
1 row in set
説明
OceanBaseデータベースは現在のバージョンでは、インタラクティブクライアントによる明示的な結果をサポートしていません。