Partilhar via


EXECUTAR IMEDIATAMENTE

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 14.3 e superior

Executa uma instrução SQL fornecida como um STRINGarquivo . Opcionalmente, a instrução passa argumentos para marcadores de parâmetro e atribui os resultados a variáveis.

Sintaxe

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

Para compatibilidade com outros dialetos SQL, EXECUTE IMMEDIATE também suporta USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parâmetros

  • sql_string

    Um STRING literal ou variável, produzindo uma instrução SQL bem formada.

    Não é possível aninhar EXECUTE IMMEDIATE instruções.

  • INTO ( var_name [, ...] )

    Opcionalmente, retorna os resultados de uma consulta de linha única em variáveis SQL. Se a consulta não retornar linhas, o resultado será NULL.

    Se a instrução não for uma consulta, o Azure Databricks gerará INVALID_STATEMENT_FOR_EXECUTE_INTO erro.

    Se a consulta retornar mais de uma linha, o Azure Databricks gerará ROW_SUBQUERY_TOO_MANY_ROWS erro.

    • var_name

      Uma variável SQL. Uma variável não pode ser referenciada mais de uma vez.

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

    Opcionalmente, se sql_string contém marcadores de parâmetro, vincula em valores aos parâmetros.

    • arg_expr

      Um literal ou variável que se liga a um marcador de parâmetro. Se os marcadores de parâmetro não forem nomeados, a ligação será por posição. Para marcadores de parâmetros nomeados, a vinculação é por nome.

    • alias

      Substitui o nome usado para vincular arg_expr a um marcador de parâmetro nomeado. Cada marcador de parâmetro nomeado deve ser correspondido uma vez. Nem todos arg_expr devem ser correspondidos.

Exemplos

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