Udostępnij za pośrednictwem


WYKONAJ NATYCHMIASTOWE WYKONANIE

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 14.3 i nowsze

Wykonuje instrukcję SQL podaną STRINGjako . Instrukcja opcjonalnie przekazuje argumenty do znaczników parametrów i przypisuje wyniki do zmiennych.

Składnia

EXECUTE IMMEDIATE sql_string
        [ INTO var_name [, ...] ]
        [ USING { arg_expr [ AS ] [alias] } [, ...] ]

W celu zachowania zgodności z innymi dialektami EXECUTE IMMEDIATE SQL obsługuje również USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parametry

  • sql_string

    Literał lub zmienna STRING , tworząc dobrze sformułowaną instrukcję SQL.

    Nie można zagnieżdżać EXECUTE IMMEDIATE instrukcji.

  • INTO ( var_name [, ...] )

    Opcjonalnie zwraca wyniki pojedynczego zapytania wiersza do zmiennych SQL. Jeśli zapytanie nie zwraca żadnych wierszy, wynik to NULL.

    Jeśli instrukcja nie jest zapytaniem, usługa Azure Databricks zgłasza INVALID_STATEMENT_FOR_EXECUTE_INTO błąd.

    Jeśli zapytanie zwraca więcej niż jeden wiersz, usługa Azure Databricks zgłasza błąd ROW_SUBQUERY_TOO_MANY_ROWS .

    • var_name

      Zmienna SQL. Nie można odwoływać się do zmiennej więcej niż raz.

  • USING { arg_expr [ AS ] [alias] } [, ...]

    Opcjonalnie, jeśli sql_string zawiera znaczniki parametrów, wiąże się z wartościami parametrów.

    • arg_expr

      Literał lub zmienna powiązana ze znacznikiem parametru. Jeśli znaczniki parametrów są nienazwane, powiązanie jest według pozycji. W przypadku nazwanych znaczników parametrów powiązanie jest według nazwy.

    • alias

      Zastępuje nazwę używaną do powiązania arg_expr z nazwanym znacznikiem parametru. Każdy nazwany znacznik parametru musi być dopasowany raz. Nie wszystkie arg_expr muszą być dopasowane.

Przykłady

-- 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