目的
準備された文をストアド プロシージャ内で実行します。
呼び出し
実行可能形式。
ストアド プロシージャのみ。
構文
- statement_name
- 前準備された文に関連付けた名前。
- SQL_identifier
- 有効なSQL識別子。
- SQL_parameter
- SQLパラメータ。
ANSI準拠
ANSI/ISO SQL:2011準拠。
許可
なし。
ルール
- EXECUTEは、動的データを返す文や動的複文リクエストと同時に使用することはできません。
- EXECUTEそのものを動的SQL文として実行することはできません。
USING句には、次に示すルールが適用されます。
- USING句は、statement_nameによって指定されるSQL文への入力として使用される変数を識別します。
- 指定したstatement_nameは、有効なものであり、EXECUTE文の前に宣言されている必要があります。
- 指定する変数の数は、識別される文におけるパラメータ マーカー(疑問符、?)の数と同じでなければなりません。n番目の変数と、n番目のパラメータ マーカーが対応している必要があります。
- 引数はターゲットに適合している必要があります。必要な適合変換は実行されます。
例: ストアド プロシージャでの準備された文の実行
CREATE PROCEDURE sales_update(store_table VARCHAR(10), item INTEGER, price DECIMAL(8,2) ) BEGIN DECLARE sql_stmt VARCHAR(100); SET sql_stmt = 'UPDATE ' || store_table || ' SET store_price=' || price || ' WHERE store_item =' || item; PREPARE stmt1 FROM SQL_stmt; EXECUTE stmt1; END;
例: ストアド プロシージャで準備された文を実行して品目の価格を更新する
CREATE PROCEDURE sales_update(store_table VARCHAR(10), item INTEGER, price DECIMAL(8,2) ) BEGIN DECLARE price_read DECIMAL(8,2); DECLARE sql_stmt VARCHAR(100); SET sql_stmt = 'UPDATE ' || store_table || ' SET store_price=? WHERE store_item = ?;'; PREPARE stmt1 FROM sql_stmt; EXECUTE stmt1 USING price, item; END;