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.

Unter diesem Thema:

Syntax

TABLE( <table_name> | <session_variable> | <bind_variable> )
Tabellenname

Ein Bezeichner für eine Tabelle:

  • Der Bezeichner kann in folgender Form vollqualifiziert sein:

    Datenbankname.Schemaname.Tabellenname
    Schemaname.Tabellenname
  • 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$$
Sitzungsvariable

Eine SQL-Variable, die für die Sitzung festgelegt wurde.

Bindungsvariable

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.

  • Wenn eine Bindungsvariable zur Vorbereitung einer Anweisung verwendet wird, sind Tabellenmetadaten nach der Vorbereitung der Anweisung nicht 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);