Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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_stringEin
STRINGkonstanter Ausdruck, der eine wohlgeformte SQL-Anweisung erzeugt.Wenn
sql_stringParametermarkierungen enthalten sind, müssen sie entweder alle positionale (?) oder alle benannte (:parm1) sein.Vor Databricks Runtime 17.3
sql_stringmuss ein Literal oder eine Variable sein. Und Sie könnenEXECUTE IMMEDIATE-Anweisungen nicht verschachteln.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_INTOaus.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_stringParametermarkierungen enthält, werden Werte an die Parameter gebunden.arg_exprEin konstanter Ausdruck , der an eine Parametermarkierung gebunden wird. Wenn die Parametermarkierungen unbenannt sind, erfolgt die Bindung nach Position. Bei benannten Parametermarkierungen erfolgt die Bindung nach Name.
Vor Databricks Runtime 17.3
arg_exprmuss ein Literal oder eine Variable vorhanden sein.aliasÜberschreibt den Namen, der zum Binden von
arg_expran einen benannten Parametermarker verwendet wird. Jeder benannte Parametermarker benötigt eine Übereinstimmung. Nicht allearg_exprerfordern Ü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;
> 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