SELECT문이 데이터를 리턴하지 않거나 추가 데이터를 리턴하지 않을 경우 이는 정상적인 상황으로 핸들링되며 오류 코드가 SQLCODE에 설정되지 않습니다. 이 상황은 현재 노드에서 데이터베이스 오류 시 예외 전달 및 경고를 오류로 처리 등록 정보의 설정과 무관하게 발생합니다.
SELECT문이 데이터를 리턴하지 않았음을 알아내려면 리턴 결과를 점검하는 ESQL을 포함시키십시오. 다음과 같은 몇 가지 방식으로 이를 수행할 수 있습니다.
SELECT 함수가 하나 이상의 값을 리턴했는지(TRUE) 또는 아무런 값도 리턴하지 않았는지(FALSE)를 나타내는 Boolean 값을 리턴합니다.
IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN ...
SELECT에 응답 시 배열을 예상할 경우 CARDINALITY를 사용하여 수신된 입력 항목의 수를 계산할 수 있습니다.
SET OutputRoot.XML.Testcase.Results[] = ( SELECT T.MYCOL FROM Database.MYTABLE) ...... IF CARDINALITY (OutputRoot.XML.Testcase.Results[]) > 0 THEN ........
SELECT문에서 THE 또는 ITEM 키워드를 사용한 경우 스칼라 값이 리턴됩니다. 행이 리턴되지 않은 경우 값 세트는 널(NULL)입니다. 하지만 값 NULL이 열 내에 포함되었고 이 두 개 경우 사이를 구분해야할 수도 있습니다.
이를 수행할 경우 COALESCE를 SELECT문에 포함시키십시오. 예는 다음과 같습니다.
SET OutputRoot.XML.Testcase.Results VALUE = THE ( SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL') FROM Database.MYTABLE);
여기에서 문자열 WAS NULL이 리턴될 경우 이것은 행이 리턴된 것이 아니라 열에 NULL이 포함되었음을 표시합니다.
이전 릴리스에서 데이터 또는 추가 데이터가 리턴되지 않았으면 대부분의 경우에 100이라는 SQLCODE가 설정된 것입니다. 메시지 플로우의 데이터베이스 오류 핸들링을 선택한 경우 예외가 브로커에 의해 발생된 것입니다.