Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:
Databricks SQL
Databricks Runtime 14.3 och senare
Kör en SQL-instruktion som tillhandahålls som en STRING.
Instruktionen skickar eventuellt argument till parametermarkörer och tilldelar resultatet till variabler.
Syntax
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
För kompatibilitet med andra SQL-dialekter stöder EXECUTE IMMEDIATE även USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parametrar
sql_stringEtt
STRINGkonstant uttryck som producerar en välformulerad SQL-instruktion.Om
sql_stringinnehåller parametermarkörer måste de vara alla positionella (?) eller alla namngivna (:parm1).Före Databricks Runtime 17.3
sql_stringmåste vara en literal eller en variabel. Och du kan inte nästlaEXECUTE IMMEDIATEinstruktioner.INTO ( var_name [, ...] )Du kan också returnera resultatet av en enskild radfråga i SQL-variabler. Om frågan inte returnerar några rader är
NULLresultatet .Om instruktionen inte är en fråga, genererar Azure Databricks ett
INVALID_STATEMENT_FOR_EXECUTE_INTOfel.Om frågan returnerar mer än en rad genererar Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS fel.
-
En SQL-variabel. Det går inte att referera till en variabel mer än en gång.
-
USING { arg_expr [ AS ] [alias] } [, ...]Om
sql_stringinnehåller parametermarkörer kan du också binda in värden till parametrarna.arg_exprEtt konstant uttryck som binder till en parametermarkör. Om parametermarkörerna inte är namngivna är bindningen efter position. För namngivna parametermarkörer är bindningen efter namn.
Före Databricks Runtime 17.3
arg_exprmåste vara en literal eller en variabel.aliasÅsidosätter namnet som används för att binda
arg_exprtill en namngiven parametermarkör. Varje namngiven parametermarkör måste matchas en gång. Allaarg_exprmåste inte matchas.
Exempel
-- 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