EXECUTE IMMEDIATE
Gilt für: Databricks SQL
Databricks Runtime 14.3 und höher
Führt eine SQL-Anweisung aus, die als STRING
bereitgestellt wird.
Die Anweisung übergibt optional Argumente an Parametermarkierungen und weist die Ergebnisse Variablen zu.
Syntax
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
Für die Kompatibilität mit anderen SQL-Dialekten unterstützt EXECUTE IMMEDIATE
auch USING ( { arg_expr [ AS ] [alias] } [, ...] )
.
Parameter
sql_string
Ein
STRING
-Literal oder eine Variable, mit dem bzw. der eine wohlgeformte SQL-Anweisung generiert wird.EXECUTE IMMEDIATE
-Anweisungen können nicht geschachtelt werden.INTO ( var_name [, ...] )
Gibt optional die Ergebnisse einer einzelnen Zeilenabfrage in SQL-Variablen zurück. Wenn die Abfrage keine Zeilen zurückgibt, ist das Ergebnis
NULL
.Wenn es sich bei der Anweisung nicht um eine Abfrage handelt, löst Azure Databricks den Fehler
INVALID_STATEMENT_FOR_EXECUTE_INTO
aus.Wenn die Abfrage mehrere Zeilen zurückgibt, löst Azure Databricks den Fehler ROW_SUBQUERY_TOO_MANY_ROWS aus.
-
Eine SQL-Variable. Auf eine Variable kann nicht mehrmals verwiesen werden.
-
USING { arg_expr [ AS ] [alias] } [, ...]
Optional: Wenn
sql_string
Parametermarkierungen enthält, werden Werte an die Parameter gebunden.arg_expr
Ein Literal oder eine Variable, das bzw. die an eine Parametermarkierung gebunden wird. Wenn die Parametermarkierungen unbenannt sind, erfolgt die Bindung nach Position. Bei benannten Parametermarkierungen erfolgt die Bindung nach Name.
alias
Überschreibt den Namen, der zum Binden von
arg_expr
an einen benannten Parametermarker verwendet wird. Jeder benannte Parametermarker benötigt eine Übereinstimmung. Nicht allearg_expr
erfordern Übereinstimmungen.
Beispiele
-- 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