アプリケーションの設計


検索ビュー用の@関数
@DB2SchemaIBM(R) Lotus Notes(R) データベースが DB2 に保存されている場合、そのデータベースに含まれる情報は、スキーマと呼ばれる 1 つの DB2 グループ構造内にあるテーブルに格納されます。これらのテーブルを指す参照はすべて、スキーマ名、ピリオド、テーブル名の形式 (例: "schema.table") をとります。
アプリケーション開発者が検索ビューで SELECT ステートメントを使用したい場合は、検索の実行対象となる DB2 Access ビュー (DAV) の名前で、DAV 名の前にスキーマ名を付ける必要があります。それ以外の場合、DB2 は IBM(R) Lotus(R) Domino(TM) Server の DB2 ユーザー名をテーブルを検索するスキーマとして使用します。たとえば、dav1 というテーブルに対して SELECT ステートメントを使用した検索ビューを実行する場合に、設計者がスキーマ名を使用していないと、DB2 はこのテーブルの場所を <db2user>.dav1 に常駐するものとして解釈します。

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


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

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

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

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


メモ 列名などに @DB2Schema を使用すると、ユーザーがネイティブの Lotus Notes データベースに対して複製を行った場合に @ERROR が発生する可能性があります。この場合は、@IF を使用してエラーを正しく処理するなどの手段をお勧めします。

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