Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à :
Databricks SQL
Databricks Runtime 14.3 et versions ultérieures
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_stringExpression
STRINGconstante, produisant une instruction SQL bien formée.Si
sql_stringcontient des marqueurs de paramètre, ils doivent être tous positionnels (?) ou tous nommés (:parm1).Avant Databricks Runtime 17.3,
sql_stringil doit s'agir d’un littéral ou d’une variable. Et vous ne pouvez pas imbriquerEXECUTE IMMEDIATEdes déclarations.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.
-
Variable SQL. Vous ne pouvez pas référencer une variable plusieurs fois.
-
USING { arg_expr [ AS ] [alias] } [, ...]Si l’élément
sql_stringcontient des marqueurs de paramètres, il lie de manière facultative des valeurs aux paramètres.arg_exprExpression constante qui se lie à un marqueur de paramètre. 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.
Avant Databricks Runtime 17.3
arg_expr, il doit s’agit d’un littéral ou d’une variable.aliasRemplace 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. Lesarg_exprne 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;
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
11
-- Using named parameter markers
> DECLARE sum INT;
> DECLARE 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
-- Using constant expressions
> DECLARE func STRING DEFAULT 'sum';
> EXECUTE IMMEDIATE 'SELECT ' || func || '(c1) FROM VALUES(:first), (:second) AS t(c1)'
USING 5 + 7 AS first, length('hello') AS second;
19