クエリの実行コンテキストと補間文字列

このセクションでは、 補間文字列 の概念について説明します。Virtual DataPort では、補間文字列は、基本ビューに対して実行されるクエリに応じて基本ビューの ラッパー または データソース が使用する特定の式をパラメータ化するために使用されます (「 ラッパーとデータソースの生成 」を参照)。

補間文字列 は、実行コンテキスト変数を使用する式で、結果として文字列を生成します。補間文字列内の変数を指定する場合、名前が英数字の文字列 (文字、数字、 # および _) であれば、接頭辞 @ を付加し、その後に変数名を続けます。名前に他の文字が含まれる変数は、名前を記号 @{} で囲んで指定できます。

注釈

記号 @\^{} のいずれかが補間文字列の定数部分に出現する場合は、文字 \ を使用してそれらの記号をエスケープする必要があります (例: \@\\\^\{\})。つまり、Windows オペレーティングシステムでローカルのファイルタイプのパスを指定する場合、文字 \\\ としてエスケープする必要があります。

: XML にエンコードされた特定のレポートに特定の会社の複数の部門からアクセスできるようにしている Web サーバーがあるとします。各部門からレポートにアクセスするためのパスは、ファイル名 (部門名に一致します) を除いて同じです。以下に例を示します。

http://examplesite.com/exampleroute/reports/DPT1.xml
http://examplesite.com/exampleroute/reports/DPT2.xml ...

これらのレポートを取得する基本ビューを作成するものとします。そのためには、XML データソース (「 XML データソース 」を参照)、XML ラッパー (「 XML ラッパー 」を参照)、およびこのラッパーを使用する基本ビューを作成する必要があります。この基本ビュー (DPT_REPORTS) には、各部門のタプルが含まれます。各タプルには 2 つの属性 DPT_NAME (text 型) と REPORT (レポートデータが含まれる) があります。

この基本ビューの データソース を作成する場合、アクセス対象のデータファイルが、クエリで参照される部門によって異なるという問題が生じます。この問題を解決するために、データソースを作成する CREATE DATASOURCE XML ステートメントの ROUTE パラメータに補間変数を追加できます。この例では、ファイルの実際の名前を入れる代わりに、サービスの URL に変数 DPT_NAME を追加しています。

http://examplesite.com/exampleroute/reports/@{DPT_NAME}.xml

このデータソースに基づいて作成されたラッパーと基本ビューには、フィールド DPT_NAME が含まれます。したがって、次のようなクエリを実行できます。

SELECT REPORT
FROM DPT_REPORTS
WHERE DPT_NAME = 'DPT3'

さらに、サーバーは次のパスからこの XML ドキュメントを取得します。

http://examplesite.com/exampleroute/reports/DPT3.xml

補間変数に値としてエレメントのリストが含まれる場合 (これは、演算子が値のリストをオペランドとして取ることができる場合に発生します)、変数に関連付けられた値は、各エレメントを + の文字で区切ってつなげたものになります。これは、WWW ラッパーの特定の要素をパラメータ化する場合に使用できます (「 WWW ラッパー 」を参照)。

値が NULL ではない場合に のみ 、補間変数をクエリで指定した値に置き換えたり、他のテキストに置き換えたりしなければならないことがあります。このようなシナリオでは、 補間関数 ExecuteIfIsNotNull を使用します。

この関数の使用方法については、管理ガイドの「 WHEREEXPRESSION 変数の使用 」で説明されています。そのセクションの例では補間変数 @WHEREEXPRESSION を使用していますが、他の任意の変数を使用できます。