Tabellenliterale¶
Tabellenliterale werden verwendet, um den Namen einer Tabelle oder eines Platzhalterwertes (anstelle eines Tabellennamens) an eine Abfrage zu übergeben. Tabellenliterale werden in der FROM-Klausel einer SQL-Anweisung verwendet und bestehen entweder aus dem Tabellennamen oder aus einer SQL-Variablen oder API-Bindungsvariablen anstelle des Tabellennamens.
Wenn Sie TABLE(...)
verwenden, um ein Tabellenliteral zu konstruieren, können Sie sich TABLE()
wie eine Tabellenfunktion vorstellen. Syntaktisch sieht TABLE()
wie eine Funktion aus. Semantisch verhält sich TABLE()
aufgrund folgender Eigenschaften ähnlich wie eine Tabellenfunktion:
Akzeptiert einen skalaren Wert als Eingabe.
Gibt eine Menge von 0 oder mehr Zeilen zurück.
Kann als Quelle für Zeilen in einer FROM-Klausel verwendet werden.
Unter diesem Thema:
Syntax¶
TABLE( { <string_literal> | <session_variable> | <bind_variable> } )
string_literal
Ein Zeichenfolgenliteral, das einen Bezeichner für eine Tabelle enthält:
Der Bezeichner kann in folgender Form vollqualifiziert sein:
db_name.schema_name.table_name
schema_name.table_name
Doppelte Anführungszeichen werden für individuelle Objektbezeichner unterstützt, die Groß-/Kleinschreibung berücksichtigen oder Leerzeichen und Sonderzeichen enthalten.
Die gesamte Bezeichnerzeichenfolge muss in einfache Anführungszeichen oder
$$
gesetzt werden. Beispiel:'mytable'
oder$$mytable$$
'mydb.myschema.mytable'
oder$$mydb.myschema.mytable$$
'"DB 1"."Schema 1".mytable'
oder$$"DB 1"."Schema 1".mytable$$
session_variable
Eine SQL-Variable, die für die Sitzung festgelegt wurde.
bind_variable
Eine Bindungsvariable in der Standardform
?
oder:name
zur Verwendung mit APIs, die Bindungen (Java, Python usw.) unterstützen.
Nutzungshinweise¶
Tabellenliterale werden nur in der FROM-Klausel unterstützt.
Wo
TABLE()
unterstützt wird, entspricht dies der Verwendung von IDENTIFIER().Wenn zur Vorbereitung einer Anweisung eine Bindungsvariable verwendet wird, sind nach der Vorbereitung der Anweisung keine Tabellenmetadaten verfügbar.
Beispiele¶
Abfrage der Tabelle mytable
mit einem Tabellenliteral (beachten Sie, dass die folgenden beiden Beispiele syntaktisch äquivalent sind):
SELECT * FROM TABLE('mytable'); SELECT * FROM TABLE($$mytable$$);
Abfrage der Tabelle mytable
im Schema myschema
und der Datenbank mydb
mit einem Tabellenliteral (beachten Sie, dass die folgenden beiden Beispiele syntaktisch äquivalent sind):
SELECT * FROM TABLE('mydb."myschema"."mytable"'); SELECT * FROM TABLE($$mydb."myschema"."mytable"$$);
Setzen Sie eine Sitzungsvariable, die auf einen Tabellennamen verweist, und fragen Sie dann die Tabelle mit der als Tabellenliteral übergebenen Variablen ab:
SET myvar = 'mytable'; SELECT * FROM TABLE($myvar);
Bereiten Sie eine Anweisung mit einer Bindung vor, die eine Tabelle repräsentiert (beachten Sie, dass die folgenden beiden Beispiele syntaktisch äquivalent sind):
SELECT * FROM TABLE(?); SELECT * FROM TABLE(:binding);