EXECUTE IMMEDIATE

適用対象:check marked yes 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 エラーが返されます。

    • var_name

      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(?), (?)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) 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(c1) FROM VALUES(:first), (:second)';
> EXECUTE IMMEDIATE sqlStr INTO sum
  USING (5 AS first, arg2 AS second);
> SELECT sum;
  11