EXECUTE IMMEDIATE

Si applica a:check marked yes Databricks Runtime 14.3 e versioni successive

Esegue un'istruzione SQL fornita come .STRING L'istruzione passa facoltativamente argomenti ai marcatori di parametro e assegna i risultati alle variabili.

Sintassi

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

Per compatibilità con altri dialetti SQL, EXECUTE IMMEDIATE supporta anche USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parametri

  • sql_string

    Valore STRING letterale o variabile che produce un'istruzione SQL ben formata.

    Non è possibile annidare EXECUTE IMMEDIATE istruzioni.

  • INTO ( var_name [, ...] )

    Facoltativamente, restituisce i risultati di una singola query di riga nelle variabili SQL. Se la query non restituisce righe il risultato è NULL.

    Se l'istruzione non è una query di Azure Databricks genera INVALID_STATEMENT_FOR_EXECUTE_INTO un errore.

    Se la query restituisce più righe di Azure Databricks genera ROW_SUBQUERY_TOO_MANY_ROWS errore.

    • var_name

      Variabile SQL. Una variabile potrebbe non fare riferimento più di una volta.

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

    Facoltativamente, se sql_string contiene marcatori di parametro, associa i valori ai parametri.

    • arg_expr

      Valore letterale o variabile che viene associato a un marcatore di parametro. Se i marcatori di parametro non sono denominati, l'associazione è in base alla posizione. Per i marcatori di parametro denominati, l'associazione è in base al nome.

    • alias

      Esegue l'override del nome usato per eseguire l'associazione arg_expr a un marcatore di parametro denominato Ogni marcatore di parametro denominato deve corrispondere una volta. Non tutti arg_expr devono essere corrispondenti.

Esempi

-- A self-contained execution using a literal string
> EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?)';
> 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)';
> EXECUTE IMMEDIATE sqlStr INTO sum
  USING (5 AS first, arg2 AS second);
> SELECT sum;
  11