EXECUTE IMMEDIATE
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_string
En
STRING
literal eller variabel som producerar en välformulerad SQL-instruktion.Du kan inte kapsla
EXECUTE IMMEDIATE
instruktioner.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
NULL
resultatet .Om instruktionen inte är en fråga genererar
INVALID_STATEMENT_FOR_EXECUTE_INTO
Azure Databricks ett fel.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_string
innehåller parametermarkörer kan du också binda in värden till parametrarna.arg_expr
En literal eller variabel 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.
alias
Åsidosätter namnet som används för att binda
arg_expr
till en namngiven parametermarkör. Varje namngiven parametermarkör måste matchas en gång.arg_expr
Alla må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;
> 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