데이터베이스 열에서 데이터 선택

데이터베이스 열에서 데이터를 선택하고 출력 메시지에 포함하도록 Compute, Filter 또는 Database 노드를 구성할 수 있습니다. 다음 예에서는 Column1 및 Column2라고 하는 두 개의 char(6) 데이터 유형 열(또는 이와 동등한 것)이 있는 USERTABLE이라고 하는 데이터베이스 테이블이 있는 것으로 가정합니다. 다음 테이블은 두 개의 행을 포함합니다.

  Column1 Column2
행 1 value1 value2
행 2 value3 value4

테이블을 정의한 데이터베이스를 식별하도록 Compute, Filter 또는 Database 노드를 구성하십시오. 예를 들면, 디폴트 데이터베이스(노드의 "데이터 소스" 등록 정보에서 지정됨)를 사용 중인 경우, 노드를 마우스 오른쪽 단추로 누르고 ESQL 열기를 선택한 후 이 노드의 모듈에서 다음과 같은 ESQL 문을 코딩하십시오.

      SET OutputRoot = InputRoot;
DELETE FIELD OutputRoot.*[<];
SET OutputRoot.XML.Test.Result[] =
  (SELECT T.Column1, T.Column2 FROM Database.USERTABLE AS T);

다음 출력 메시지를 생성하게 됩니다.

<Test>
   <Result>
      <Column1>value1</Column1>
      <Column2>value2</Column2>
   </Result>
   <Result>
      <Column1>value3</Column1>
      <Column2>value4</Column2>
   </Result>
</Test>
SELECT를 트리거하려면, 다음과 같은 형식의 XML 본문으로 트리거 메시지를 송신하십시오.
<Test>
   <Result>
      <Column1></Column1>
      <Column2></Column2>
   </Result>
   <Result>
      <Column1></Column1>
      <Column2></Column2>
   </Result>
</Test>

XML의 정확한 구조는 중요하지 않지만 주변의 태그는 <Test>이어야 ESQL의 참조와 일치합니다. 이 태그가 없는 경우 ESQL문은 최상위 레벨 주변 태그를 작성하는데 이것은 올바른 XML이 아닙니다.

특정 조건에 맞는 모든 행의 모든 열을 포함하는 출력 메시지를 작성하려는 경우, WHERE절이 있는 SELECT문을 사용하십시오.

-- Declare and initialize a variable to hold the 
--      test vaue (in this case the surname Smith)
DECLARE CurrentCustomer STRING 'Smith';

-- Loop through table records to extract matching information
SET OutputRoot.XML.Invoice[] = 
        (SELECT R FROM Database.USERTABLE AS R
                            WHERE R.Customer.LastName = CurrentCustomer
    );

메시지 필드는 테이블에 표시된 열과 동일한 순서로 작성됩니다.

데이터베이스 환경의 SQL과 친숙한 경우, SELECT *를 코딩할 것으로 예상했을 것입니다. 상관 이름을 사용하여 열에 대한 모든 참조를 시작해야 하므로 이것은 브로커에서 승인되지 않습니다. 이것은 선언된 변수로 모호함을 없앱니다. 또한 SELECT I.*을 코딩하는 경우, 브로커에서 이것을 승인하지만 *는 첫 번째 하위 요소로 해석되며, 다른 데이터베이스 SQL에서 예상할 수 있는 모든 요소는 아닙니다.

대소문자 구분 데이터베이스 시스템의 테이블에서 데이터 선택

데이터베이스 시스템이 대소문자를 구분하는 경우 대체 시도를 사용해야 합니다. 이 방법은 생성된 필드의 이름을 다르게 변경하려는 경우에도 필요합니다.

      SET OutputRoot = InputRoot;
SET OutputRoot.XML.Test.Result[] =
    (SELECT T.Column1 AS Column1, T.Column2 AS Column2
  FROM Database.USERTABLE AS T);

이 예는 위의 예와 동일한 메시지를 생성합니다. 데이터베이스 열(예: T.Column1 및 T.Column2)에 대한 참조가 데이터베이스 정의와 정확히 일치하도록 올바른 대소문자로 지정되었는지 확인하십시오. 그렇지 않으면, 예를 들어 T.COLUMN1을 지정한 경우 브로커는 런타임 오류를 생성합니다. SELECT문에서 Column1Column2 사용을 참고하십시오. 여기에서 임의 값을 사용할 수 있으며, 예에서 수행한 대로 데이터베이스에서 정의한 열의 이름과 일치하지 않습니다.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak05810_