説明
このステートメントは、ステートメントを準備し、後で参照するための名前を指定します。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データベースは、現在のバージョンではインタラクティブクライアントによる明示的な結果表示をサポートしていません。