Literale und Variablen als Bezeichner mit IDENTIFIER()-Syntax¶
In Snowflake-SQL-Anweisungen können Sie nicht nur über den Namen auf Objekte verweisen (siehe Anforderungen an Bezeichner), sondern auch ein Zeichenfolgenliteral, eine Sitzungsvariable, eine Bindungsvariable oder eine Snowflake Scripting-Variable verwenden, um auf ein Objekt zu verweisen. Sie können zum Beispiel eine Sitzungsvariable verwenden, die in der FROM-Klausel einer SELECT-Anweisung auf den Namen einer Tabelle gesetzt wird. Um einen in einem Literal oder einer Variablen angegebenen Objektnamen zu verwenden, verwenden Sie die Syntax IDENTIFIER().
Die Verwendung von IDENTIFIER() zur Identifizierung von Datenbankobjekten ist eine bewährte Methode, da sie die Wiederverwendbarkeit des Codes erhöht und dazu beiträgt, das Risiko einer SQL-Injektion zu vermeiden.
Syntax¶
string_literalZeichenfolge, die den Namen des Objekts identifiziert:
Die Zeichenfolge muss entweder in einfache Anführungszeichen (
'name') eingeschlossen sein oder mit einem Dollarzeichen ($name) beginnen.Das Zeichenfolgenliteral kann ein vollständig qualifizierter Objektname sein (z. B.
'db_name.schema_name.object_name'oder$db_name.schema_name.object_name).
session_variableEine SQL-Variable, die für die Sitzung festgelegt wurde.
bind_variableEine Bindungsvariable in Form von
?oder:variable, die von Clients oder Programmierschnittstellen verwendet werden kann, die Bindungen unterstützen (JDBC, ODBC, Python usw.).snowflake_scripting_variableEine Snowflake Scripting-Variable, die festgelegt wurde.
Nutzungshinweise¶
Sie können Literale und Variablen (Sitzung oder Bindung) in einigen Fällen verwenden, wenn Sie ein Objekt durch einen Namen identifizieren müssen (Abfragen, DML, DDL usw.).
Sie können Bindungsvariablen für Objektbezeichner und Bindungsvariablen für Werte in derselben Abfrage verwenden.
In einer FROM-Klausel können Sie
TABLE( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } )als Synonym fürIDENTIFIER( { string_literal | session_variable | bind_variable | snowflake_scripting_variable } )verwenden.Obwohl IDENTIFIER() die Syntax einer Funktion verwendet, handelt es sich nicht um eine echte Funktion und wird nicht von Befehlen wie SHOW FUNCTIONS zurückgegeben.
Beispiele¶
Die folgenden Beispiele verwenden die Syntax IDENTIFIER().
Verwendung der IDENTIFIER()-Syntax mit Zeichenfolgenliteralen¶
Diese Beispiele zeigen, wie Sie auf ein Objekt verweisen, wenn ein Zeichenfolgenliteral den Bezeichner des Objekts enthält.
Erstellen Sie eine Datenbank:
Schema erstellen
Erstellen Sie eine Tabelle mit einem Tabellennamen ohne Berücksichtigung der Groß- und Kleinschreibung, der in einer Zeichenfolge angegeben ist, die den vollqualifizierten Namen enthält:
Erstellen Sie eine Tabelle mit einem zwischen Groß- und Kleinschreibung unterscheidenden Tabellennamen, der in einer Zeichenfolge mit doppelten Anführungszeichen angegeben ist:
Zeigen Sie die Tabellen in einem Schema an:
Verwendung der IDENTIFIER()-Syntax mit Sitzungsvariablen¶
Diese Beispiele zeigen, wie Sie eine Sitzungsvariable verwenden, die einen Tabellen- oder Schemanamen hat.
Legen Sie eine Sitzungsvariable für einen Schemanamen fest:
Legen Sie eine Sitzungsvariable für einen Tabellennamen fest:
Geben Sie das Schema für die aktuelle Sitzung an:
Werte in eine Tabelle einzufügen:
Eine Tabelle abfragen:
Dieses Beispiel zeigt, wie Sie eine Sitzungsvariable verwenden, die einen Funktionsnamen hat.
Erstellen Sie die Funktion
speed_of_light:Rufen Sie die Funktion beim Namen auf:
Rufen Sie die Funktion mit der IDENTIFIER()-Syntax auf:
Verwendung der IDENTIFIER()-Syntax mit Bindungsvariablen¶
In diesen Beispielen wird die Verwendung von Bindungsvariablen für die Identifizierung von Objekten veranschaulicht.
Dieses Beispiel zeigt Ihnen, wie Sie einen Funktionsnamen in JDBC binden. Die Funktion heißt speed_of_light.
Die folgenden Beispiele zeigen eine Vielzahl von SQL-Anweisungen, die eine Bindung verwenden können, und eine Vielzahl von Datenbankobjekten, die gebunden werden können (einschließlich Schemanamen und Tabellennamen):
Verwendung der IDENTIFIER()-Syntax mit Snowflake Scripting-Variablen¶
Das folgende Beispiel zeigt, wie Sie eine Snowflake Scripting-Variable für einen Tabellennamen in einer SELECT-Anweisung verwenden: