Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime 14.3 a novější
Spustí příkaz SQL zadaný jako .STRING
Příkaz volitelně předá argumenty značkám parametrů a přiřadí výsledky proměnným.
Syntaxe
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
Kvůli kompatibilitě s jinými dialekty EXECUTE IMMEDIATE SQL podporuje také USING ( { arg_expr [ AS ] [alias] } [, ...] )
Parametry
sql_stringKonstantní
STRINGvýraz, který vytváří dobře formátovaný příkaz SQL.Pokud
sql_stringobsahuje značky parametrů, musí být všechny poziční (?) nebo všechny pojmenované (:parm1).Před Databricks Runtime 17.3 musí být
sql_stringkonstantní hodnota nebo proměnná. A vy nemůžete vnořit výrazyEXECUTE IMMEDIATE.INTO ( var_name [, ...] )Volitelně vrátí výsledky dotazu na jeden řádek do proměnných SQL. Pokud dotaz nevrátí žádné řádky, výsledek je
NULL.Pokud příkaz není dotazem, Azure Databricks vyvolá
INVALID_STATEMENT_FOR_EXECUTE_INTOchybu.Pokud dotaz vrátí více než jeden řádek, Azure Databricks vyvolá ROW_SUBQUERY_TOO_MANY_ROWS chybu.
-
Proměnná SQL. Proměnná nesmí být odkazována více než jednou.
-
USING { arg_expr [ AS ] [alias] } [, ...]Volitelně platí, že pokud
sql_stringobsahuje značky parametrů, sváže hodnoty s parametry.arg_exprKonstantní výraz, který je vázán na značku parametru. Pokud jsou značky parametrů nepojmenované, vazba je podle pozice. Pro pojmenované značky parametrů je vazba podle názvu.
Před modulem Databricks Runtime 17.3
arg_exprmusí být literálem nebo proměnnou.aliasPřepíše název použitý k vytvoření vazby
arg_exprna pojmenovanou značku parametru. Každá pojmenovaná značka parametru se musí shodovat jednou. Ne všechnyarg_exprse musí shodovat.
Příklady
-- 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