Sdílet prostřednictvím


EXECUTE IMMEDIATE

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano 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.

    • var_name

      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šechny arg_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