SET문

SET 문은 변수에 값을 지정합니다.

구문

소개

TargetFieldReference는 지정 대상을 식별합니다. 대상은 다음 중 하나일 수 있습니다.
  • 선언된 스칼라 변수
  • 선언된 행 변수
  • 사전 정의된 행 변수 중 하나(예: InputRoot)
  • 임의의 행 변수 내의 필드(즉, 서브트리 또는 개념 행)
  • 임의의 행 변수 내의 필드 목록(즉, 개념 행)
  • 위의 사항을 지시하는 선언된 참조 변수
대상은 데이터베이스 엔티티일 수 없습니다.

SourceExpression은 지정할 값을 제공하는 표현식입니다. 표현식일 수 있으며, 스칼라, 행 또는 목록 값을 리턴할 수 있습니다.

스칼라 변수에 지정

대상이 선언된 스칼라 변수인 경우 SourceExpression이 평가되고 변수에 지정됩니다. 필요한 경우 값이 변수의 데이터 유형으로 변환됩니다. 변환할 수 없는 경우 전개 시 오류가 발생하거나 런타임에서 예외가 발생합니다.

널(null) 값은 다른 값과 정확히 동일한 방식으로 처리됩니다. 즉, 표현식이 널(null)로 평가되는 경우 "null" 값이 변수에 지정됩니다.

스칼라 변수의 경우 TYPE, NAME, NAMESPACE 및 VALUE 절은 의미가 없고 허용되지 않습니다.

행, 목록 및 필드에 대한 지정

대상이 선언된 행 변수, 사전 정의된 행 변수 중 하나, 행 변수 내의 필드, 행 변수 내의 필드 목록 또는 이러한 사항을 지시하는 선언된 참조 변수인 경우 최종 대상이 필드가 됩니다. 이러한 경우 대상 필드가 탐색됩니다(필요한 경우 필드 작성).

배열 색인이 TargetFieldReference에서 사용되는 경우 대상 필드에 대한 탐색은 루트에서 대상 필드로의 직접 경로에서만 필드를 작성할 수 있습니다. 예를 들면, 다음의 SET 문에서는 하나 이상의 Structure 인스턴스가 메시지에 있어야 합니다.

 SET OutputRoot.XML.Message.Structure[2].Field = ... 
대상 필드의 값은 다음 사항을 기준으로 일련의 규칙에 따라 설정됩니다.
  1. TYPE, NAME, NAMESPACE 또는 VALUE절의 존재 또는 부재
  2. 소스 표현식에서 리턴한 데이터 유형
  1. TYPE, NAME, NAMESPACE 또는 VALUE절이 없는 경우(가장 일반적인 경우) 결과는 SourceExpression이 스칼라, 행 또는 목록으로 평가되는지 여부에 따라 다릅니다.
    • SourceExpression이 스칼라로 평가되는 경우 대상 필드의 값은 SourceExpression에서 리턴한 값으로 설정됩니다. 결과가 널(null)인 경우 대상 필드가 제거되는 경우는 제외됩니다. 필드의 새 값은 이전 값과 동일한 데이터 유형이 아닐 수 있습니다.
    • SourceExpression이 행으로 평가되는 경우:
      1. 대상 필드가 식별됩니다.
      2. 대상 필드의 값이 설정됩니다.
      3. 대상 필드의 하위 필드가 목록의 구조 및 내용으로 지시된 새 세트로 대체됩니다.
    • SourceExpression이 목록으로 평가되는 경우:
      1. 대상 트리의 대상 필드 세트가 식별됩니다.
      2. 대상 필드가 너무 적으면 추가로 작성되고 너무 많으면 추가로 제거됩니다.
      3. 대상 필드 값이 설정됩니다.
      4. 대상 필드의 하위 필드가 목록의 구조 및 내용으로 지시된 새 세트로 대체됩니다.

      list 유형 요소 작업에 대한 추가 정보는 xsd:: list 유형 요소에 대한 작업을 참조하십시오.

  2. TYPE 절이 있는 경우 대상 필드의 유형은 SourceExpression에서 리턴한 값으로 설정됩니다. 리턴된 값이 스칼라가 아니거나 유형이 INTEGER 유형이 아니거나 널(null)인 경우에 예외가 발생합니다.
  3. NAMESPACE 절이 있는 경우 대상 필드의 네임스페이스는 SourceExpression에서 리턴한 값으로 설정됩니다. 리턴된 값이 스칼라가 아니거나 유형이 CHARACTER 유형이 아니거나 널(null)인 경우에 예외가 발생합니다.
  4. NAME 절이 있는 경우 대상 필드의 이름은 SourceExpression에서 리턴한 값으로 설정됩니다. 리턴된 값이 스칼라가 아니거나 유형이 CHARACTER 유형이 아니거나 널(null)인 경우에 예외가 발생합니다.
  5. VALUE 절이 있는 경우 대상 필드의 값은 SourceExpression에 의해 리턴된 값으로 변경됩니다. 리턴된 값이 스칼라가 아니면 예외가 발생합니다.

참고사항

SET문은 필드를 변경하거나 원래의 메시지에 새 필드를 추가하여 메시지에 수정을 가하는 Compute 노드에서 특히 유용합니다. SET 문은 Environment 트리 또는 Local Environment 트리에서 선언된 변수나 필드를 설정하는 Filter 및 Database 노드에서도 유용합니다. Compute 노드에서 메시지를 수정하는 다음과 같은 명령문을 사용할 수 있습니다.
      SET OutputRoot = InputRoot; 
SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);

이 예는 메시지의 한 필드를 대문자로 입력합니다. 첫 번째 명령문은 입력 메시지의 전체 사본인 출력 메시지를 구성합니다. 두 번째 명령문은 오른쪽의 표현식에 정의된 대로 Order.Name 필드의 값을 새 값으로 설정합니다.

Order.Name 필드가 원래의 입력 메시지에 없는 경우 첫 번째 명령문에 의해 생성된 출력 메시지에도 존재하지 않습니다. 두 번째 명령문의 오른쪽에 있는 표현식이 널(null)을 리턴합니다(UPPER 함수 호출 내에 참조된 필드가 없기 때문). 필드에 널(null) 값을 지정하면 이미 있는 필드를 삭제하는 효과가 있으므로 두 번째 명령문이 아무런 영향을 주지 않게 됩니다.

필드를 삭제하지 않고 필드에 널(null) 값을 지정하려는 경우 다음과 같은 명령문을 사용하십시오.
 SET OutputRoot.XML.Order.Name VALUE = NULL;
관련 개념
ESQL 개요
관련 태스크
ESQL 개발
메시지의 요소 액세스
관련 참조
구문 다이어그램: 사용 가능한 유형
ESQL문
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak05140_