WYKONAJ NATYCHMIASTOWE WYKONANIE
Dotyczy: Databricks SQL Databricks Runtime 14.3 i nowsze
Wykonuje instrukcję SQL podaną STRING
jako .
Instrukcja opcjonalnie przekazuje argumenty do znaczników parametrów i przypisuje wyniki do zmiennych.
Składnia
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
W celu zachowania zgodności z innymi dialektami EXECUTE IMMEDIATE
SQL obsługuje również USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parametry
sql_string
Literał lub zmienna
STRING
, tworząc dobrze sformułowaną instrukcję SQL.Nie można zagnieżdżać
EXECUTE IMMEDIATE
instrukcji.INTO ( var_name [, ...] )
Opcjonalnie zwraca wyniki pojedynczego zapytania wiersza do zmiennych SQL. Jeśli zapytanie nie zwraca żadnych wierszy, wynik to
NULL
.Jeśli instrukcja nie jest zapytaniem, usługa Azure Databricks zgłasza
INVALID_STATEMENT_FOR_EXECUTE_INTO
błąd.Jeśli zapytanie zwraca więcej niż jeden wiersz, usługa Azure Databricks zgłasza błąd ROW_SUBQUERY_TOO_MANY_ROWS .
-
Zmienna SQL. Nie można odwoływać się do zmiennej więcej niż raz.
-
USING { arg_expr [ AS ] [alias] } [, ...]
Opcjonalnie, jeśli
sql_string
zawiera znaczniki parametrów, wiąże się z wartościami parametrów.arg_expr
Literał lub zmienna powiązana ze znacznikiem parametru. Jeśli znaczniki parametrów są nienazwane, powiązanie jest według pozycji. W przypadku nazwanych znaczników parametrów powiązanie jest według nazwy.
alias
Zastępuje nazwę używaną do powiązania
arg_expr
z nazwanym znacznikiem parametru. Każdy nazwany znacznik parametru musi być dopasowany raz. Nie wszystkiearg_expr
muszą być dopasowane.
Przykłady
-- 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