アプリケーションの設計


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

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

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


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

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

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

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


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

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

関連項目