JALANKAN SEGERA

Berlaku untuk:check marked yes Databricks Runtime 14.3 ke atas

Menjalankan pernyataan SQL yang disediakan sebagai STRING. Pernyataan secara opsional meneruskan argumen ke penanda parameter dan menetapkan hasilnya ke variabel.

Sintaks

EXECUTE IMMEDIATE sql_string
        [ INTO var_name [, ...] ]
        [ USING { arg_expr [ AS ] [alias] } [, ...] ]

Untuk kompatibilitas dengan dialek SQL lainnya, EXECUTE IMMEDIATE juga mendukung USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parameter

  • sql_string

    Harfiah STRING atau variabel, menghasilkan pernyataan SQL yang terbentuk dengan baik.

    Anda tidak dapat menumpuk EXECUTE IMMEDIATE pernyataan.

  • INTO ( var_name [, ...] )

    Secara opsional mengembalikan hasil kueri baris tunggal ke dalam variabel SQL. Jika kueri tidak mengembalikan baris hasilnya adalah NULL.

    Jika pernyataan bukan kueri Azure Databricks INVALID_STATEMENT_FOR_EXECUTE_INTO menimbulkan kesalahan.

    Jika kueri mengembalikan lebih dari satu baris Azure Databricks menimbulkan kesalahan ROW_SUBQUERY_TOO_MANY_ROWS .

    • var_name

      Variabel SQL. Variabel mungkin tidak dirujuk lebih dari sekali.

  • USING { arg_expr [ AS ] [alias] } [, ...]

    Secara opsional, jika sql_string berisi penanda parameter, ikat nilai ke parameter.

    • arg_expr

      Literal atau variabel yang mengikat penanda parameter. Jika penanda parameter tidak disebutkan namanya, pengikatannya berdasarkan posisi. Untuk penanda parameter bernama, pengikatan adalah berdasarkan nama.

    • alias

      Mengambil alih nama yang digunakan untuk mengikat arg_expr penanda parameter bernama Setiap penanda parameter bernama harus dicocokkan sekali. Tidak semua arg_expr harus dicocokkan.

Contoh

-- 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