テーブルリテラル

テーブルリテラルは、テーブル名ではなくテーブル名またはプレースホルダー値をクエリに渡すために使用されます。テーブルリテラルは SQL ステートメントの FROM 句に表示され、テーブル名、またはテーブル名の代わりに SQL 変数または API バインド変数のいずれかで構成されます。

このトピックの内容:

構文

TABLE( <table_name> | <session_variable> | <bind_variable> )
テーブル名

テーブルの 識別子

  • 識別子は、次の形式で完全修飾できます。

    データベース名.スキーマ名.テーブル名
    スキーマ名.テーブル名
  • 二重引用符は、大文字と小文字が区別されるか、スペースと特殊文字を含む個々のオブジェクト識別子に対してサポートされています。

  • 識別子文字列全体を一重引用符または $$ で囲む必要があります。例:

    'mytable' または $$mytable$$
    'mydb.myschema.mytable' または $$mydb.myschema.mytable$$
    '"DB 1"."Schema 1".mytable' または $$"DB 1"."Schema 1".mytable$$
セッション変数

セッションに設定された SQL 変数 です。

バインド変数

バインディング(Java、Pythonなど)をサポートする APIs で使用するための、 ? または :名前 の標準形式のバインド変数です。

使用上の注意

  • テーブルリテラルは FROM 句でのみサポートされます。

  • バインド変数を使用してステートメントを準備する場合、ステートメントを準備した後はテーブルメタデータを使用できません。

テーブルリテラルを使用してテーブル mytable をクエリします(次の2つの例は構文的に同等であることに注意してください)。

SELECT * FROM TABLE('mytable');

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

テーブルリテラルを使用して、スキーマ myschema およびデータベース mydb のテーブル mytable をクエリします(次の2つの例は構文的に同等です)。

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

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

テーブル名を参照するセッション変数を設定し、テーブルリテラルとして渡された変数を使用してテーブルをクエリします。

SET myvar = 'mytable';

SELECT * FROM TABLE($myvar);

テーブルを表すバインディングを持つステートメントを準備します(次の2つの例は構文的に同等です)。

SELECT * FROM TABLE(?);

SELECT * FROM TABLE(:binding);