SQL ステートメントは、ステートメントを使用するメソッドのパラメーターに実行時に渡される値を使用できます。SQL ステートメントは、それらのパラメーターをマーカーで示します。 各マーカーは、メソッド内のパラメーターに対応しています。
メソッドが呼び出されると、これらのパラメーターの値は呼び出し元のアプリケーションにより提供される引数から取得され、SQL ステートメントの実行時に使用されます。
以下のパラメーター・マーカーは、メモリー内 Java コレクションに対して実行されるアノテーション付きメソッドにある SELECT ステートメントの FROM 節で使用できます。 これら 2 つのパラメーター・マーカーは、照会内のどこで実行されるとしても、FROM 節では同じ意味内容を持ちます。
同じ SQL ステートメント内で両方のタイプのパラメーター・マーカーを使用することはできません。
pureQuery ランタイムは、コレクションのクラスに関して必要とする情報を、アノテーション付きメソッドの宣言から取得します。
以下のパラメーター・マーカーは、メモリー内 Java コレクションに対して実行されるインライン・メソッドにある SELECT ステートメントの FROM 節で使用できます。
同じ SQL ステートメント内で両方のタイプのパラメーター・マーカーを使用することはできません。
<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);