Partager via


EXECUTE IMMEDIATE

S’applique à :coche marquée oui Databricks SQL case marquée oui Databricks Runtime 14.3 et ultérieur

Permet d’exécuter une instruction SQL fournie comme STRING. L’instruction passe éventuellement des arguments à des marqueurs de paramètres et attribue les résultats aux variables.

Syntaxe

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

Pour bénéficier d’une compatibilité avec d’autres dialectes SQL, EXECUTE IMMEDIATE prend également en charge USING ( { arg_expr [ AS ] [alias] } [, ...] )

Paramètres

  • sql_string

    Une variable ou un littéral STRING générant une instruction SQL bien formée.

    Vous ne pouvez pas imbriquer des instructions EXECUTE IMMEDIATE.

  • INTO ( var_name [, ...] )

    Permet de retourner de manière facultative les résultats d’une seule requête de ligne dans des variables SQL. Si la requête ne renvoie aucune ligne, le résultat est NULL.

    Si l’instruction n’est pas une requête, Azure Databricks génère une erreur INVALID_STATEMENT_FOR_EXECUTE_INTO.

    Si la requête retourne plusieurs lignes, Azure Databricks génère une erreur ROW_SUBQUERY_TOO_MANY_ROWS.

    • var_name

      Variable SQL. Vous ne pouvez pas référencer une variable plusieurs fois.

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

    Si l’élément sql_string contient des marqueurs de paramètres, il lie de manière facultative des valeurs aux paramètres.

    • arg_expr

      Un littéral ou une variable qui lie à un marqueur de paramètres. Si les marqueurs de paramètres n’ont pas de nom, la liaison s’effectue par position. Pour les marqueurs de paramètres nommés, la liaison s’effectue par nom.

    • alias

      Remplace le nom utilisé pour lier arg_expr à un marqueur de paramètre nommé. Chaque marqueur de paramètre nommé doit être mis en correspondance une seule fois. Les arg_expr ne sont pas tous mis en correspondance.

Exemples

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