EXECUTE IMMEDIATE
Van toepassing op: Databricks SQL
Databricks Runtime 14.3 en hoger
Voert een SQL-instructie uit die is opgegeven als een STRING
.
De instructie geeft eventueel argumenten door aan parametermarkeringen en wijst de resultaten toe aan variabelen.
Syntaxis
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
Voor compatibiliteit met andere SQL-dialecten ondersteunt EXECUTE IMMEDIATE
u ook USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parameters
sql_string
Een
STRING
letterlijke of variabele die een goed opgemaakte SQL-instructie produceert.U kunt geen instructies nesten
EXECUTE IMMEDIATE
.INTO ( var_name [, ...] )
Retourneert desgewenst de resultaten van één rijquery in SQL-variabelen. Als de query geen rijen retourneert, is
NULL
het resultaat.Als de instructie geen query is, genereert
INVALID_STATEMENT_FOR_EXECUTE_INTO
Azure Databricks een fout.Als de query meer dan één rij retourneert, genereert Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS fout.
-
Een SQL-variabele. Er kan niet meer dan één keer naar een variabele worden verwezen.
-
USING { arg_expr [ AS ] [alias] } [, ...]
sql_string
Als u parametermarkeringen bevat, worden eventueel waarden gekoppeld aan de parameters.arg_expr
Een letterlijke waarde of variabele die is gekoppeld aan een parametermarkering. Als de parametermarkeringen geen naam hebben, is de binding op positie. Voor benoemde parametermarkeringen is binding op naam.
alias
Hiermee wordt de naam overschreven die wordt gebruikt om een benoemde parametermarkering te binden
arg_expr
. Elke benoemde parametermarkering moet eenmaal worden vergeleken. Niet allearg_expr
moeten overeenkomen.
Voorbeelden
-- 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