Littéraux de table

Les littéraux de table sont utilisés pour transmettre le nom d’une table ou une valeur d’espace réservé (au lieu d’un nom de table) dans une requête. Les littéraux de table apparaissent dans la clause FROM d’une instruction SQL et contiennent soit le nom de la table, soit une variable SQL soit une variable liée à une API au lieu du nom de la table.

Dans ce chapitre :

Syntaxe

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

Un identificateur pour une table :

  • L’identificateur peut être complet sous la forme de :

    nom_bd.nom_schéma.nom_table
    nom_schéma.nom_table
  • Les guillemets doubles sont pris en charge pour les identificateurs d’objets individuels qui sont sensibles à la casse ou qui contiennent des espaces et des caractères spéciaux.

  • Toute la chaîne d’identificateur doit être délimitée par des guillemets simples ou $$. Par exemple :

    'mytable' ou $$mytable$$
    'mydb.myschema.mytable' ou $$mydb.myschema.mytable$$
    '"DB 1"."Schema 1".mytable' ou $$"DB 1"."Schema 1".mytable$$
variable_session

Une variable SQL qui a été définie pour la session.

variable_liaison

Variable de liaison, sous la forme standard de ? ou :nom, à utiliser avec des APIs qui prennent en charge les liaisons (Java, Python, etc.).

Notes sur l’utilisation

  • Les littéraux de table ne sont pris en charge que dans la clause FROM.

  • Lorsqu’une variable de liaison est utilisée pour préparer une instruction, les métadonnées de table ne sont pas disponibles après la préparation de l’instruction.

Exemples

Interroger la table mytable en utilisant un littéral de table (notez que les deux exemples suivants sont syntaxiquement équivalents) :

SELECT * FROM TABLE('mytable');

SELECT * FROM TABLE($$mytable$$);

Interroger la table mytable dans le schéma myschema et la base de données mydb en utilisant un littéral de table (notez que les deux exemples suivants sont syntaxiquement équivalents) :

SELECT * FROM TABLE('mydb."myschema"."mytable"');

SELECT * FROM TABLE($$mydb."myschema"."mytable"$$);

Définir une variable de session qui fait référence à un nom de table, puis interroger la table en utilisant la variable transmise comme littéral de table :

SET myvar = 'mytable';

SELECT * FROM TABLE($myvar);

Préparer une instruction avec une liaison qui représente une table (notez que les deux exemples suivants sont syntaxiquement équivalents) :

SELECT * FROM TABLE(?);

SELECT * FROM TABLE(:binding);