Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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