Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 ook USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parameters
sql_stringEen
STRINGconstante expressie die een goed opgemaakte SQL-instructie produceert.Als
sql_stringparameteraanduidingen bevat, moeten ze allemaal positioneel (?) of allemaal benoemd (:parm1) zijn.Vóór Databricks Runtime 17.3
sql_stringmoet een letterlijke of variabele zijn. En u kunt instructies niet nestenEXECUTE IMMEDIATE.INTO ( var_name [, ...] )Retourneert desgewenst de resultaten van één rijquery in SQL-variabelen. Als de query geen rijen retourneert, is
NULLhet resultaat.Als de instructie geen query is, genereert
INVALID_STATEMENT_FOR_EXECUTE_INTOAzure 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] } [, ...]Als
sql_stringoptioneel parametermarkeringen bevat, worden waarden aan de parameters gekoppeld.arg_exprEen constante expressie die wordt gekoppeld aan een parametermarkering. Als de parametermarkeringen geen naam hebben, is de binding op positie. Voor benoemde parametermarkeringen is binding op naam.
Vóór Databricks Runtime 17.3
arg_exprmoet een letterlijke of variabele zijn.aliasHiermee wordt de naam overschreven die is gebruikt om
arg_expraan een benoemde parametermarker te koppelen. Elke benoemde parametermarkering moet eenmaal worden vergeleken. Niet allearg_exprmoeten 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;
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
11
-- Using named parameter markers
> DECLARE sum INT;
> DECLARE 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
-- Using constant expressions
> DECLARE func STRING DEFAULT 'sum';
> EXECUTE IMMEDIATE 'SELECT ' || func || '(c1) FROM VALUES(:first), (:second) AS t(c1)'
USING 5 + 7 AS first, length('hello') AS second;
19