EXECUTE IMMEDIATE
Si applica a: Databricks SQL Databricks Runtime 14.3 e versioni successive
Esegue un'istruzione SQL fornita come .STRING
L'istruzione passa facoltativamente argomenti ai marcatori di parametro e assegna i risultati alle variabili.
Sintassi
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
Per compatibilità con altri dialetti SQL, EXECUTE IMMEDIATE
supporta anche USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parametri
sql_string
Valore
STRING
letterale o variabile che produce un'istruzione SQL ben formata.Non è possibile annidare
EXECUTE IMMEDIATE
istruzioni.INTO ( var_name [, ...] )
Facoltativamente, restituisce i risultati di una singola query di riga nelle variabili SQL. Se la query non restituisce righe il risultato è
NULL
.Se l'istruzione non è una query, Azure Databricks genera
INVALID_STATEMENT_FOR_EXECUTE_INTO
un errore.Se la query restituisce più righe, Azure Databricks genera ROW_SUBQUERY_TOO_MANY_ROWS errore.
-
Variabile SQL. Una variabile potrebbe non fare riferimento più di una volta.
-
USING { arg_expr [ AS ] [alias] } [, ...]
Facoltativamente, se
sql_string
contiene marcatori di parametro, associa i valori ai parametri.arg_expr
Valore letterale o variabile che viene associato a un marcatore di parametro. Se i marcatori di parametro non sono denominati, l'associazione è in base alla posizione. Per i marcatori di parametro denominati, l'associazione è in base al nome.
alias
Esegue l'override del nome usato per eseguire l'associazione
arg_expr
a un marcatore di parametro denominato. Ogni marcatore di parametro denominato deve essere confrontato una volta. Non tuttiarg_expr
devono essere corrispondenti.
Esempi
-- 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