SQLSTATE 함수

데이터베이스 상태 함수인 SQLSTATE는 디폴트 값이 '00000'(다섯 개의 0으로 이루어진 한 문자열)인 5자 CHARACTER 데이터 유형을 리턴합니다.

구문

메시지 플로우 내에서는 Filter, Database 및 Compute 노드에서 사용 가능한 ESQL 데이터베이스 함수를 사용하여 외부 데이터베이스 자원에 액세스하고 갱신할 수 있습니다. 외부 데이터베이스를 호출할 때, 테이블이 없거나 데이터베이스가 사용 불가능하거나, 이미 존재하는 키에 대한 삽입이라는 것을 알리는 오류를 수신할 수 있습니다.

이러한 오류가 발생할 경우, 브로커의 디폴트 조치는 예외를 생성하는 것입니다. 이 작동은 데이터베이스 오류 시 예외 생성 등록 정보의 설정 방식에 따라 결정됩니다. 이 선택란을 선택하면, 브로커가 노드 처리를 중지한 후 메시지를 노드의 failure 터미널로 전달하고 오류 정보를 ExceptionList에 기록합니다. 디폴트 작동을 대체하고 노드의 ESQL로 데이터베이스 오류를 처리하려면 데이터베이스 오류 시 예외 생성 선택란을 지워야 합니다. 브로커가 예외를 발생할 수 없으며 특정 SQL 리턴 코드가 예상되지 않은 경우 THROW문을 사용하여 이전과 같이 예외를 발생시킬 수 있습니다. THROW에 대한 설명은 THROW문을 참조하십시오.

노드에서 데이터베이스 오류를 처리하기로 하는 경우, 데이터베이스 상태 함수 SQLSTATE를 사용하여 ESQL에서 호출된 DBMS의 상태 정보를 수신할 수 있습니다. 가능한 오류를 처리하기 위해 현재 노드의 ESQL에 있는 조건문에서 해당 함수를 사용할 수 있습니다.

SQL 상태

ESQL에서 SQL 상태는 변수 길이 문자열입니다. 규정상 길이가 6자이며 0-9, A-Z 문자만 포함됩니다. 6자의 의미는 다음과 같습니다.
1자
예외 원본
2 - 3자
예외 클래스
4 - 6자
예외 서브클래스

예외의 SQL 상태는 두 개의 단계 프로세스로 판별됩니다. 첫 번째 단계에서는 예외 정보를 조사하고 원본 오류를 설명하는 예외를 찾을 때까지 랩핑 예외(즉, 예외가 발생할 때 브로커가 수행하는 내용을 설명하는 정보)를 통과합니다.

두 번째 단계는 다음과 같습니다.
  1. 선택된 예외가 데이터베이스 예외인 경우 SQL 상태는 데이터베이스에서 제공했지만 문자 "D"가 앞에 붙어 브로커에서 발생하는 예외와의 혼동을 피합니다. SQL 코드, 고유 오류 및 오류 텍스트는 데이터베이스에서 제공한 내용입니다.
  2. 선택된 예외가 사용자 예외인 경우(즉, THROW 문에서 생성되는 경우) SQL 코드, 상태, 고유 오류 및 오류 텍스트는 처음 네 개의 예외 삽입에서 순서대로 가져옵니다. 결과 상태 값은 원래대로("U"와 같은 문자가 앞에 붙지 않음) 가져옵니다. 사실상 문자 "U"는 브로커에서 원래 표시기로 사용하지 않습니다. 기존 SQL 상태를 모방하지 않고 고유의 SQL 상태를 정의하려면 문자 "U"로 시작하는 SQL 상태를 사용하십시오. 문자 "U"로 시작하는 SQL 상태를 사용하면 핸들러가 모든 사용자 정의 및 발생한 예외를 LIKE’U%’ 연산자와 일치시킬 수 있습니다.
  3. 선택된 예외가 메시지 전송 또는 ESQL 구현 자체에서 생성된 경우 SQL 코드, 상태, 고유 오류 및 오류 텍스트는 아래 목록에서 설명한 것과 같습니다.
  4. 기타 예외의 경우 SQL 상태는 ''로서 원본 없음, 클래스 없음 및 서브클래스 없음을 나타냅니다.

현재 빈 SQL 상태를 제공하는 일부 예외는 향후 릴리스에서 개별 상태를 제공할 수 있습니다. 미분류 예외를 포착하려면 범위의 마지막 핸들러에서 SQL 상태에 대해 "모든" 와일드카드("%")를 사용하십시오. 이전의 미분류 예외에 새 고유 SQL 상태가 제공되는 경우 계속해서 동일한 예외 세트를 포착합니다.

다음과 같은 SQL 상태가 정의됩니다.

Dddddd
ddddd는 데이터베이스에서 리턴한 상태입니다.
SqlState = ‘S22003'
산술 오버플로우. 결과가 숫자 유형인 조작이 지원되는 범위 이상의 값을 가집니다.
SqlState = ‘S22004’
널(null) 값은 허용되지 않습니다. 널값이 허용되지 않는 위치에 널값이 있습니다.
SqlState = ‘S22007’
올바르지 않은 날짜 시간 형식. 문자에서 datetime 유형까지의 캐스트에 사용된 문자열에 올바르지 않은 기본 형식(예: '01947-10-24')이 있거나 그레고리오 책력에서 허용하는 범위를 넘어선 값(예: '1947-21-24')이 있습니다.
SqlState = ‘S22008’
날짜 시간 필드 오버플로우. 결과가 날짜/시간 유형인 조작이 지원되는 범위 이상의 값을 가집니다.
SqlState = ‘S22011’
SUBSTRING 오류. FROM 및 FOR 매개변수는 첫 번째 피연산자의 길이와 함께 SUBSTRING 함수의 규칙을 위반합니다.
SqlState = ‘S22012’
0으로 나누기. 결과 데이터 유형에 무한대 개념이 없는 나누기 조작에 0 오른쪽 피연산자가 있습니다.
SqlState = ‘S22015’
간격 필드 오버플로우. 결과가 INTERVAL 유형인 조작에서 INTERVAL 데이터 유형에서 지원한 범위 이상의 값을 가집니다.
SqlState = ‘S22018’
캐스트에 대해 올바르지 않은 문자 값.
SqlState = ‘SPS001’
올바르지 않은 대상 터미널. PROPAGATE to terminal 문에서 올바르지 않은 터미널 이름을 사용하려고 했습니다.
SqlState = ‘SPS002’
올바르지 않은 대상 레이블. PROPAGATE to label 문에서 올바르지 않은 레이블을 사용하려고 했습니다.
SqlState = 'MQW001', SqlNativeError = 0
비트스트림이 MQ 메시지에 대한 요구사항을 충족시키지 않습니다. 큐에 넣지 않았습니다. 재시도 및 큐 관리에 의해 이 문제가 해결되지 않습니다.
SqlState = 'MQW002', SqlNativeError = 0
대상 큐 또는 큐 관리자 이름이 유효하지 않습니다(즉, 유니코드에서 큐 관리자의 코드 페이지로 변환할 수 없음). 재시도 및 큐 비우기에 의해 이 문제가 해결되지 않습니다.
SqlState = 'MQW003', SqlNativeError = 0
요청 모드가 지정되지 않았지만 "응답 대상" 큐 또는 큐 관리자 이름이 유효하지 않습니다(즉, 유니코드에서 메시지의 코드 페이지로 변환할 수 없음). 재시도 및 큐 비우기에 의해 이 문제가 해결되지 않습니다.
SqlState = 'MQW004', SqlNativeError = 0
요청 모드가 지정되지 않았지만 메시지에서 가져온 큐 또는 큐 관리자 이름이 유효하지 않습니다(즉, 해당 코드 페이지에서 유니코드로 변환할 수 없음). 재시도 및 큐 비우기에 의해 이 문제가 해결되지 않습니다.
SqlState = 'MQW005', SqlNativeError = 0
목적지 목록 모드가 지정되지 않았지만 제공된 목적지 목록이 목적지 목록에 대한 기본 요구사항을 충족시키지 않습니다. 메시지를 큐에 넣지 않았습니다. 재시도 및 큐 관리에 의해 이 문제가 해결되지 않습니다.
SqlState = 'MQW101', SqlNativeError = As returned by MQ
대상 큐 관리자 또는 큐을 열 수 없습니다. 큐 관리에 의해 이 문제를 해결할 수 있지만 재시도에 의해서는 해결할 수 없습니다.
SqlState = 'MQW102', SqlNativeError = as returned by MQ
대상 큐 관리자 또는 큐을 기록할 수 없습니다. 재시도 및 큐 관리에 의해 이 문제를 해결할 수 있습니다.
SqlState = 'MQW201', SqlNativeError = number of destinations with an error
목적지 목록을 처리하는 중 둘 이상의 오류가 발생했습니다. 메시지가 0개 이상의 큐에 놓여 있습니다. 재시도 및 큐 관리에 의해 이 문제를 해결할 수 있습니다.
사용자가 THROW 문에서 사용한 내용
위에서 정의된 예외 중 하나를 모방하는 경우를 제외하고 사용자 예외에는 Uuuuuuu를 사용하십시오.
빈 문자열
기타 오류.
관련 개념
메시지 플로우 개요
ESQL 개요
관련 태스크
메시지 플로우 컨텐츠 정의
ESQL 개발
데이터베이스 상태 캡처
관련 참조
SQLCODE 함수
SQLERRORTEXT 함수
SQLNATIVEERROR 함수
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak17990_