EXECUTE IMMEDIATE
適用対象: Databricks SQL Databricks Runtime 14.3 以上
STRING
として指定された SQL ステートメントを実行します。
このステートメントは、必要に応じてパラメーター マーカーに引数を渡し、その結果を変数に割り当てます。
構文
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
他の SQL 言語との互換性のために、EXECUTE IMMEDIATE
では USING ( { arg_expr [ AS ] [alias] } [, ...] )
もサポートされています
パラメーター
sql_string
適切な形式の SQL ステートメントを生成する
STRING
リテラルまたは変数。EXECUTE IMMEDIATE
ステートメントを入れ子にすることはできません。INTO ( var_name [, ...] )
必要に応じて、単一行クエリの結果を SQL 変数に返します。 クエリから行が返されない場合、結果は
NULL
です。ステートメントがクエリでない場合、Azure Databricks は
INVALID_STATEMENT_FOR_EXECUTE_INTO
エラーを発生させます。クエリが複数行を返す場合、Azure Databricks は ROW_SUBQUERY_TOO_MANY_ROWS エラーを発生させます。
-
SQL 変数。 変数は複数回参照されない場合があります。
-
USING { arg_expr [ AS ] [alias] } [, ...]
必要に応じて、
sql_string
にパラメーター マーカーが含まれている場合は、パラメーターに値がバインドされます。arg_expr
パラメーター マーカーにバインドされるリテラルまたは変数。 パラメーター マーカーに名前が付いていない場合、バインディングは位置によって行われます。 名前付きパラメーター マーカーの場合、バインドは名前によって行われます。
alias
arg_expr
を名前付きパラメーター マーカーにバインドするために使用される名前をオーバーライドします。 名前付きパラメーター マーカーがマッチする回数はそれぞれ 1 回である必要があります。 すべてのarg_expr
を照合する必要があるわけではありません。
例
-- A self-contained execution using a literal string
> EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)' USING 5, 6;
11
-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)';
> 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(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum
USING (5 AS first, arg2 AS second);
> SELECT sum;
11