EXECUTE IMMEDIATE
Platí pro: Databricks SQL Databricks Runtime 14.3 a vyšší
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] } [, ...] )
Parameters
sql_string
Literál
STRING
nebo proměnná vytvářející příkaz SQL ve správném formátu.Příkazy nelze vnořit
EXECUTE 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_INTO
chybu.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_string
obsahuje značky parametrů, vytvoří vazby v values k parameters.arg_expr
Literál nebo proměnná, která je svázaná se značkou parametru. Pokud jsou značky parametrů nepojmenované, vazba je na pozici. Pro pojmenované značky parametrů je vazba podle názvu.
alias
Přepíše název použitý k vytvoření vazby
arg_expr
na pojmenovanou značku parametru. Každá pojmenovaná značka parametru se musí shodovat jednou. Ne všechnyarg_expr
se 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;
> 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