メモリー内 Java コレクションの照会の FROM 節にあるパラメーター・マーカー

メモリー内 Java コレクションに対して実行されるメソッドのパラメーターを参照するために、SQL SELECT ステートメントで使用できる数種類のマーカーがあります。

SQL ステートメントは、ステートメントを使用するメソッドのパラメーターに実行時に渡される値を使用できます。SQL ステートメントは、それらのパラメーターをマーカーで示します。 各マーカーは、メソッド内のパラメーターに対応しています。

メソッドが呼び出されると、これらのパラメーターの値は呼び出し元のアプリケーションにより提供される引数から取得され、SQL ステートメントの実行時に使用されます。

アノテーション付きメソッドでの SELECT ステートメントのパラメーター・マーカー

以下のパラメーター・マーカーは、メモリー内 Java コレクションに対して実行されるアノテーション付きメソッドにある SELECT ステートメントの FROM 節で使用できます。 これら 2 つのパラメーター・マーカーは、照会内のどこで実行されるとしても、FROM 節では同じ意味内容を持ちます。

同じ SQL ステートメント内で両方のタイプのパラメーター・マーカーを使用することはできません。

?
? パラメーター・マーカーは、メソッドのパラメーターと位置により一致します。 nth ? マーカーは、アノテーション付きメソッドの nth パラメーターと一致します。
?n
?n パラメーター・マーカー (n は正整数リテラルを表す) は、メソッドのパラメーターと順序位置により一致します。 ?n は、アノテーション付きメソッドの nth パラメーターと一致します。

pureQuery ランタイムは、コレクションのクラスに関して必要とする情報を、アノテーション付きメソッドの宣言から取得します。

インライン・メソッドでの SELECT ステートメントのパラメーター・マーカー

以下のパラメーター・マーカーは、メモリー内 Java コレクションに対して実行されるインライン・メソッドにある SELECT ステートメントの FROM 節で使用できます。

同じ SQL ステートメント内で両方のタイプのパラメーター・マーカーを使用することはできません。

?<classname>
? パラメーター・マーカーは、メソッドのパラメーターと位置により一致します。 nth ? 文字は、Object... パラメーターからの値を含む Object[] の (n-1)th 項目と一致します。
?n.<classname>
?n パラメーター・マーカー (n は正整数リテラルを表す) は、メソッドのパラメーターと位置により一致します。 ?n は、Object... パラメーターからの値を含む Object[] の (n-1)th 項目と一致します。

<classname> は、メソッドの実行時にパラメーターとして渡される、対応するコレクションのメンバーの完全修飾クラス名を表します。

pureQuery ランタイムは、メモリー内 Java コレクションのメンバーを調べるときに使用されるクラスを知る必要があります。

最後の 2 つの形式のいずれかが使用される場合、以下の例で示すように、クラス名は特に FROM 節で識別されます。

List<Employee> emps; 
Dept[] depts;

List<Map<String, Object>> list = qocData.queryList 
("select e.id, d.name " +
  "from ?1.com.ibm.data.test.Employee as e, " +      
       "?2.com.ibm.data.test.single.Dept as d " + 
   "where e.deptid=d.id", emps, depts);

フィードバック