메모리의 Java 콜렉션에 대한 쿼리의 FROM절의 매개변수 표시문자

메모리의 Java 콜렉션에 대해 실행되는 메소드의 매개변수를 참조하기 위해 SQL SELECT문에 사용할 수 있는 여러 가지 다른 표시문자가 있습니다.

SQL문은 런타임 시 해당 명령문을 사용하는 메소드의 매개변수에 전달되는 값을 사용할 수 있습니다. SQL문은 이러한 매개변수를 표시문자로 표시합니다. 각 표시문자는 메소드의 매개변수에 해당합니다.

메소드가 호출될 때 이러한 매개변수의 값은 호출 애플리케이션에서 제공하고 SQL문의 실행 중에 사용되는 인수에서 얻습니다.

어노테이션이 있는 메소드의 SELECT문에 대한 매개변수 표시문자

메모리의 Java 콜렉션에 대해 실행되는 어노테이션이 있는 메소드에 표시되는 SELECT문의 FROM절에 허용되는 매개변수 표시문자는 다음과 같습니다. 이러한 두 매개변수 표시문자는 FROM절에서 쿼리의 다른 위치에서와 동일한 의미를 갖습니다.

동일한 SQL문에 두 유형의 매개변수 표시문자를 모두 사용할 수 없습니다.

?
? 매개변수 표시문자는 위치에 따른 메소드의 매개변수와 일치합니다. n번째 ? 표시문자는 어노테이션이 있는 메소드의 n번째 매개변수와 일치합니다.
?n
?n 매개변수 표시문자는 순서 위치에 따른 메소드의 매개변수와 일치합니다. 여기서 n은 양의 정수 리터럴을 표시합니다. ?n은 어노테이션이 있는 메소드의 n번째 매개변수와 일치합니다.

pureQuery는 런타임 시 어노테이션이 있는 메소드의 선언에서 콜렉션의 클래스에 관해 필요한 정보를 가져옵니다.

인라인 메소드의 SELECT문에 대한 매개변수 표시문자

메모리의 Java 콜렉션에 대해 실행되는 인라인 메소드에 표시되는 SELECT문의 FROM절에 허용되는 매개변수 표시문자는 다음과 같습니다.

동일한 SQL문에 두 유형의 매개변수 표시문자를 모두 사용할 수 없습니다.

?<classname>
? 매개변수 표시문자는 위치에 따른 메소드의 매개변수와 일치합니다. n번째 ? 문자는 Object... 매개변수의 값을 포함하는 Object[]에서 (n-1)번째 항목과 일치합니다.
?n.<classname>
?n 매개변수 표시문자는 위치에 따른 메소드의 매개변수와 일치합니다. 여기서 n은 양의 정수 리터럴을 표시합니다. ?nObject... 매개변수의 값을 포함하는 Object[]에서 (n-1)번째 항목과 일치합니다.

<classname>은 메소드가 실행될 때 매개변수로 전달되는 해당 콜렉션에 있는 구성원의 완전한 클래스 이름을 표시합니다.

pureQuery는 런타임 시 메모리의 Java 콜렉션의 구성원을 검사할 때 사용되는 클래스를 알아야 합니다.

마지막 두 양식 중 하나가 사용되는 경우, 다음 예제에서처럼 클래스 이름은 특히 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);

피드백