TABLE_SCHEMA スカラー関数

TABLE_SCHEMA 関数は、別名チェーンが解決された後で検出されるオブジェクトのスキーマ名を戻します。

構文図を読む構文図をスキップするTABLE_SCHEMA(object-name,object-schema)

スキーマは SYSIBM です。

指定された object-name (および object-schema) が、解決の開始点として使用されます。開始点が別名を参照していない場合は、開始点のスキーマ名が戻されます。 結果のスキーマ名は、表、ビュー、または未定義オブジェクトのいずれかになります。 Unicode データベースでは、指定した引数が GRAPHIC ストリングであると、 まず文字ストリングに変換されてから、関数が実行されます。

object-name
解決しようとする非修飾名 (通常は既存の別名) を表す文字式。 object-name は、CHAR または VARCHAR のデータ・タイプ、1 バイト以上 129 バイト未満の長さでなければなりません。
object-schema
指定された object-name の解決前の値を修飾するのに使うスキーマを表す文字式。object-schema は、CHAR または VARCHAR のデータ・タイプ、1 バイト以上 129 バイト未満の長さでなければなりません。

object-schema を指定しない場合は、修飾子にデフォルトのスキーマが使用されます。

この関数の結果のデータ・タイプは VARCHAR(128 OCTETS) です。object-name が NULL になる可能性がある場合は、結果も NULL になる可能性があります。object-name が NULL であれば、結果も NULL 値になります。object-schema が NULL 値の場合は、デフォルトのスキーマ名が使用されます。結果は、スキーマ名を表す文字ストリングになります。 結果のスキーマは、次のいずれかのオブジェクトのスキーマ名を表します。
table
object-name の値が、表名 (object-schema の入力値またはデフォルト値が戻される) であったか、あるいは解決結果が表となり、そのスキーマ名が戻されることになる別名であった。
view
object-name の値が、ビュー名 (object-schema の入力値またはデフォルト値が戻される) であったか、あるいは解決結果がビューとなり、そのスキーマ名が戻されることになる別名であった。
未定義オブジェクト
object-name の値が、未定義オブジェクト名 (object-schema の入力値またはデフォルト値が戻される) であったか、あるいは解決結果が未定義オブジェクトとなり、そのスキーマ名が戻されることになる別名であった。

したがって、NULL 以外の object-name 値がこの関数に指定された場合、結果のスキーマ名を持つオブジェクト名が存在していなくても、常に値が戻されます。例えば、TABLE_SCHEMA('DEPT', 'PEOPLE') は、 カタログ項目が見つからない場合には、'PEOPLE ' を戻します。

  • パーティション・データベース構成において、TABLE_SCHEMA および TABLE_NAME スカラー関数を使用するときにコーディネーター・パーティションとカタログ・パーティションの間で生じる不必要な通信を避けることによって、パフォーマンスを改善するには、代わりに BASE_TABLE 表関数を使用することができます。

  • 例 1: PBIRD は、表 HEDGES.T1 に定義されている別名 PBIRD.A1 を使用して、 SYSCAT.TABLES から指定した表の統計値を選択しようとしています。
       SELECT NPAGES, CARD FROM SYSCAT.TABLES
         WHERE TABNAME = TABLE_NAME ('A1')
         AND TABSCHEMA = TABLE_SCHEMA ('A1')

    HEDGES.T1 について要求された統計値が、カタログから取り出されます。

  • 例 2: HEDGES.X1 というオブジェクトの統計値を、 HEDGES.X1 を使用して SYSCAT.TABLES から選択します。 HEDGES.X1 が別名か表かが分からないため、 TABLE_NAME と TABLE_SCHEMA を使用します。
       SELECT NPAGES, CARD FROM SYSCAT.TABLES
         WHERE TABNAME = TABLE_NAME ('X1','HEDGES')
         AND TABSCHEMA = TABLE_SCHEMA ('X1','HEDGES')

    HEDGES.X1 が表であるとすると、 HEDGES.X1 について要求された統計がカタログから取り出されます。

  • 例 3: HEDGES.T2 に対して定義された別名 PBIRD.A2 を使用して、 SYSCAT.TABLES から指定した表の統計を選択しますが、HEDGES.T2 は存在していません。
       SELECT NPAGES, CARD FROM SYSCAT.TABLES
         WHERE TABNAME = TABLE_NAME ('A2','PBIRD')
         AND TABSCHEMA = TABLE_SCHEMA ('A2',PBIRD')

    TABNAME = 'T2' および TABSCHEMA = 'HEDGES' である項目が SYSCAT.TABLES の中に見つからないため、 このステートメントからは 0 個のレコードが戻されます。

  • 例 4: SYSCAT.TABLES 内の各項目の修飾名、 および別名項目については最終参照名を選択します。
       SELECT TABSCHEMA AS SCHEMA,  TABNAME AS NAME,
         TABLE_SCHEMA (BASE_TABNAME, BASE_TABSCHEMA) AS REAL_SCHEMA,
         TABLE_NAME (BASE_TABNAME, BASE_TABSCHEMA) AS REAL_NAME
         FROM SYSCAT.TABLES

    このステートメントは、カタログ内の各オブジェクトの修飾名と、 別名項目については最終参照名 (別名が解決された後の名前) を戻します。 別名でないすべての項目については、 BASE_TABNAME および BASE_TABSCHEMA が NULL 値であるため、 REAL_SCHEMA 列と REAL_NAME 列は NULL 値になります。