照会ビュー用の@関数

@DB2Schema

Notes データベースが DB2® に保存されている場合、そのデータベースに含まれる情報は、スキーマと呼ばれる 1 つの DB2 グループ構造内にあるテーブルに格納されます。これらのテーブルを指す参照はすべて、スキーマ名、ピリオド、テーブル名の形式 (例: "schema.table") をとります。

アプリケーション開発者が照会ビューで SELECT ステートメントを使用したい場合は、照会の実行対象となる DB2 Access ビュー (DAV) の名前で、DAV 名の前にスキーマ名を付ける必要があります。それ以外の場合、DB2 は Domino® サーバーの DB2 ユーザー名をテーブルを検索するスキーマとして使用します。例えば、dav1 というテーブルに対して SELECT ステートメントを使用した照会ビューを実行する場合に、設計者がスキーマ名を使用していないと、DB2 はこのテーブルの場所を <db2user>.dav1 に常駐するものとして解釈します。

これを避けるため、アプリケーション開発者は次の照会を使用して、カタログテーブルからスキーマ名を調べることができます。

SELECT SCHEMA FROM DOMINO.SCHEMAS WHERE filepath = '<path to db2nsf>

ただし、スキーマ名が必要になるたびにこれを実行しなければならないのは不便かもしれません。

そのうえ、[ファイル] - [データベース] - [コピー] を使用して DB2 対応 Notes データベースをコピーしても、新しいコピーは元のデータベースの Domino テーブルを参照します。したがって、これらの DB2 対応 Notes データベースに対して実行される照会ビューも、元のテーブルソースを参照することになります。

DB2 対応 Notes データベースのスキーマ名を素早く簡単に判断するには、@関数の @DB2Schema を使用します。この関数を照会式で使用すると、指定した DB2 対応 Notes データベースの DB2 スキーマ名が返されます。 照会ビューでは、照会式 (どれがテキスト文字列になるかの評価) の構造内に @関数が組み込まれている場合があります。@関数を使用できるコンテキストはすべてサポートされています。これには、ビュー選択式や列式などが含まれます。

@DB2Schema を使用した照会式の例を次に示します。

SELECT firstname, lastname FROM " + @DB2Schema( @DbName ) + ".dav1
注: 列名などに @DB2Schema を使用すると、ユーザーがネイティブの Notes データベースに対して複製を行った場合に @ERROR が発生する可能性があります。この場合は、@IF を使用してエラーを正しく処理するなどの手段をお勧めします。

@IsDB2

@IsDB2 関数はパスを表すテキスト引数を受け入れますが、その際に、@DB2Schema の使用を制御するルールと同じものを使用します。TRUE が返された場合は DB2 対応 Notes データベースが DB2 に格納されていることを意味し、FALSE が返された場合はネイティブの NSF 形式で格納されている (つまりソースデータベースの性質を判断できない) ことを意味します。