JALANKAN SEGERA
Berlaku untuk: 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 .
-
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 semuaarg_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