SET 문은 변수에 값을 지정합니다.
SourceExpression은 지정할 값을 제공하는 표현식입니다. 표현식일 수 있으며, 스칼라, 행 또는 목록 값을 리턴할 수 있습니다.
대상이 선언된 스칼라 변수인 경우 SourceExpression이 평가되고 변수에 지정됩니다. 필요한 경우 값이 변수의 데이터 유형으로 변환됩니다. 변환할 수 없는 경우 전개 시 오류가 발생하거나 런타임에서 예외가 발생합니다.
널(null) 값은 다른 값과 정확히 동일한 방식으로 처리됩니다. 즉, 표현식이 널(null)로 평가되는 경우 "null" 값이 변수에 지정됩니다.
스칼라 변수의 경우 TYPE, NAME, NAMESPACE 및 VALUE 절은 의미가 없고 허용되지 않습니다.
대상이 선언된 행 변수, 사전 정의된 행 변수 중 하나, 행 변수 내의 필드, 행 변수 내의 필드 목록 또는 이러한 사항을 지시하는 선언된 참조 변수인 경우 최종 대상이 필드가 됩니다. 이러한 경우 대상 필드가 탐색됩니다(필요한 경우 필드 작성).
배열 색인이 TargetFieldReference에서 사용되는 경우 대상 필드에 대한 탐색은 루트에서 대상 필드로의 직접 경로에서만 필드를 작성할 수 있습니다. 예를 들면, 다음의 SET 문에서는 하나 이상의 Structure 인스턴스가 메시지에 있어야 합니다.
SET OutputRoot.XML.Message.Structure[2].Field = ...
list 유형 요소 작업에 대한 추가 정보는 xsd:: list 유형 요소에 대한 작업을 참조하십시오.
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
이 예는 메시지의 한 필드를 대문자로 입력합니다. 첫 번째 명령문은 입력 메시지의 전체 사본인 출력 메시지를 구성합니다. 두 번째 명령문은 오른쪽의 표현식에 정의된 대로 Order.Name 필드의 값을 새 값으로 설정합니다.
Order.Name 필드가 원래의 입력 메시지에 없는 경우 첫 번째 명령문에 의해 생성된 출력 메시지에도 존재하지 않습니다. 두 번째 명령문의 오른쪽에 있는 표현식이 널(null)을 리턴합니다(UPPER 함수 호출 내에 참조된 필드가 없기 때문). 필드에 널(null) 값을 지정하면 이미 있는 필드를 삭제하는 효과가 있으므로 두 번째 명령문이 아무런 영향을 주지 않게 됩니다.
SET OutputRoot.XML.Order.Name VALUE = NULL;