Littéraux et variables comme identificateurs avec la syntaxe IDENTIFIER()¶
Dans les instructions SQL Snowflake, en plus de faire référence aux objets par leur nom (voir Exigences relatives à l’identificateur), vous pouvez également utiliser un littéral de chaîne, une variable de session, une variable de liaison ou une variable Exécution de scripts Snowflake pour faire référence à un objet. Par exemple, vous pouvez utiliser une variable de session définie comme le nom d’une table dans la clause FROM d’une instruction SELECT. Pour utiliser un nom d’objet spécifié dans un littéral ou une variable, utilisez la syntaxe IDENTIFIER().
Utiliser IDENTIFIER() pour identifier les objets de base de données est une bonne pratique car cela peut rendre le code plus réutilisable et aider à prévenir les risques d”injection SQL.
Syntaxe¶
string_literalChaîne identifiant le nom de l’objet :
La chaîne doit être délimitée par des guillemets simples (
'name') ou commencer par un signe dollar ($name).Le littéral de chaîne peut être un nom d’objet complet (par exemple
'db_name.schema_name.object_name'ou$db_name.schema_name.object_name).
session_variableUne variable SQL qui a été définie pour la session.
bind_variableVariable de liaison, sous la forme de
?ou:variable, qui peut être utilisée par des interfaces client/programme qui prennent en charge la liaison (JDBC, ODBC, Python, etc.).snowflake_scripting_variableVariable Exécution de scripts Snowflake qui a été définie.
Notes sur l’utilisation¶
Vous pouvez utiliser des littéraux et des variables (session ou liaison) dans certains cas lorsque vous devez identifier un objet par son nom (requêtes, DML, DDL, etc.).
Vous pouvez utiliser des variables de liaison pour des identificateurs d’objets et des variables de liaison pour les valeurs dans la même requête.
Dans une clause FROM vous pouvez utiliser
TABLE( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } )comme synonyme deIDENTIFIER( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } ).Bien que IDENTIFIER() utilise la syntaxe d’une fonction, il ne s’agit pas d’une vraie fonction. Des commandes comme SHOWFUNCTIONS ne la renvoient pas.
Exemples¶
Les exemples suivants utilisent la syntaxe IDENTIFIER().
Utilisation de la syntaxe IDENTIFIER() avec des chaînes littérales¶
Ces exemples montrent comment faire référence à un objet lorsqu’un littéral de chaîne contient l’identificateur de l’objet.
Créer une base de données :
Créez un schéma :
Créez une table en utilisant un nom de table insensible à la casse spécifié dans une chaîne contenant le nom complet :
Créez une table en utilisant un nom de table sensible à la casse spécifié dans une chaîne entre guillemets doubles :
Affichez les tables dans un schéma :
Utilisation de la syntaxe IDENTIFIER() avec les variables de session¶
Ces exemples vous montrent comment utiliser une variable de session qui contient un nom de table ou un nom de schéma.
Définissez une variable de session pour un nom de schéma :
Définissez une variable de session pour un nom de table :
Spécifiez le schéma pour la session en cours :
Insérez des valeurs dans une table :
Interroger une table :
Cet exemple montre comment utiliser une variable de session qui a un nom de fonction.
Créez la fonction
speed_of_light:Appelez la fonction par son nom :
Appelez la fonction en utilisant la syntaxe IDENTIFIER() :
Utilisation de la syntaxe IDENTIFIER() avec des variables de liaison¶
Ces exemples montrent comment utiliser des variables de liaison pour identifier des objets.
Cet exemple vous montre comment lier un nom de fonction dans JDBC. La fonction s’appelle speed_of_light.
Les exemples suivants présentent une variété d’instructions SQL qui peuvent utiliser la liaison et une variété d’objets de base de données qui peuvent être liés (y compris les noms de schéma et de table) :
Utilisation de la syntaxe IDENTIFIER() avec les variables de Snowflake Scripting¶
Cet exemple montre comment utiliser une variable Snowflake Scripting pour un nom de table dans une instruction SELECT :