EXECUTE IMMEDIATE
説明
STRINGとして提供されたSQLステートメントを実行し、オプションでarg_exprNをパラメータマーカーに渡し、結果をvar_nameNに割り当てます。
構文
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, …] ]
[ USING { (arg_expr [ AS ] [alias] [, …] ) | arg_expr [ AS ] [alias] [, …] } ]
パラメータ
-
sql_string
整形されたSQLステートメントを生成するSTRING式。
-
INTO var_name [, …]
オプションで、単一行クエリの結果をSQL変数に返します。クエリが行を返さない場合、結果はNULLになります。
var_nameSQL変数。変数は複数回参照できません。
-
USING arg_expr [, …]
オプションで、sql_stringにパラメータマーカーが含まれている場合、パラメータに値をバインドします。
arg_exprパラメータマーカーにバインドする式。パラメータマーカーに名前がない場合、バインディングは位置によって行われます。名前のないパラメータマーカーの場合、バインディングは名前によって行われます。aliasarg_exprを名前付きパラメータマーカーにバインドするために使用される名前をオーバーライドします。
各名前付きパラメータマーカーは一度だけ一致する必要があります。すべてのarg_exprが一致する必要はありません。
例
-- A self-contained execution using a literal string
EXECUTE IMMEDIATE 'SELECT SUM(col1) FROM VALUES(?), (?)' USING 5, 6;
11
-- A SQL string composed in a SQL variable
DECLARE sqlStr = 'SELECT SUM(col1) FROM VALUES(?), (?)';
DECLARE arg1 = 5;
DECLARE arg2 = 6;
EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
11
-- Using the INTO clause
DECLARE sum INT;
EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
SELECT sum;
11
-- Using named parameter markers
SET VAR sqlStr = 'SELECT SUM(col1) FROM VALUES(:first), (:second)';
EXECUTE IMMEDIATE sqlStr INTO sum USING 5 AS first, arg2 AS second;
SELECT sum;
11