BASE_TABLE 表関数
BASE_TABLE 関数は、別名チェーンが解決された後で検出されたオブジェクトのオブジェクト名およびスキーマ名の両方を戻します。
スキーマは SYSPROC です。
指定された objectname (および objectschema) が、解決の開始点として使用されます。 開始点が別名を参照していない場合は、開始点のスキーマ名および非修飾名が戻されます。この関数は、以下の列から成る単一行の表を戻します。
| 列名 | データ・タイプ | 説明 |
|---|---|---|
| BASESCHEMA | VARCHAR(128) | 別名チェーンが解決された後に検出されたオブジェクトのスキーマ名。 一致する別名が見つからなかった場合、objectschema と一致します。 |
| BASENAME | VARCHAR(128) | 別名チェーンが解決された後に検出されたオブジェクトの非修飾名。 一致する別名が見つからなかった場合、objectname と一致します。名前は、表、ビュー、または未定義のオブジェクトを特定する可能性があります。 |
- objectschema
- 指定された objectname の解決前の値を修飾するのに使うスキーマを表す文字式。 objectschema は、CHAR または VARCHAR のデータ・タイプ、 1 バイト以上 129 バイト未満の長さでなければなりません。
- objectname
- 解決しようとする非修飾名を表す文字式。 objectname は、CHAR または VARCHAR のデータ・タイプ、 1 バイト以上 129 バイト未満の長さでなければなりません。
注: BASE_TABLE 表関数を使用すると、パーティション・データベース構成において、TABLE_SCHEMA および TABLE_NAME スカラー関数を使用するときにコーディネーター・パーティションとカタログ・パーティションの間で生じる不必要な通信を避けることによって、パフォーマンスが改善されます。
例
TABLE_SCHEMA および TABLE_NAME 関数を使用して次のように記述されたステートメントがあるとします。
SELECT COLCOUNT INTO :H00030
FROM SYSCAT.TABLES
WHERE OWNER = TABLE_SCHEMA(:H00031 ,:H00032 )
AND TABNAME = TABLE_NAME(:H00031 ,:H00032 )
これと等価のステートメントを、BASE_TABLE 関数を使用して次のように記述できます。
SELECT COLCOUNT INTO :H00030
FROM SYSCAT.TABLES A, TABLE(SYSPROC.BASE_TABLE(:H00032, :H00031)) AS B
WHERE A.OWNER = B.BASESCHEMA
AND A.TABNAME = B.BASENAME