DB2 SQL 반환 코드

DB2 SQL return codes

SQL Return CodeIBM Db2 프로그램의 SQL 호출로 인한 프로그래밍 장애 진단에 일상적으로 사용된다.IBM Db2 프로그램의 중요한 특징은 오류 처리다.SQL Return Code를 포함하는 오류 진단은 Db2 SQLCA 블록 내의 SQLCODE 필드에서 이루어진다.

SQLCODE는 더 이상 SQL 표준의 일부가 아니다.SQL 표준은 SQLCODE를 보다 상세한 SQLSTATE로 대체했다.

SQLCA

SQL 통신 영역(SQLCA) 구조는 IBM Db2 프로그램 내에서 애플리케이션 프로그램에 피드백을 반환하기 위해 사용된다.

SQLCODE

SQLCODE 필드에는 SQL 반환 코드가 포함되어 있다.코드는 0, 음 또는 양일 수 있다.

  • 0은 실행이 성공적이었음을 의미한다.
  • 음수 값은 오류와 함께 실행이 실패했음을 나타낸다.
    예를 들어 -911은 롤백과 함께 시간 초과가 발생했음을 의미한다.
  • 양의 값은 경고와 함께 성공적인 실행을 의미한다.
    예를 들어 일치하는 행이 없거나 커서가 테이블 끝에 도달했음을 의미하는 +100이 그 예다.

다음은 DB2용 SQLCODE의 보다 포괄적인 목록이다.이 목록은 완전하지 않다는 점에 유의하십시오.또한 일부 SQLCODE는 특정 DB2 제품(예: Db2 z/OS에서만, Db2 LUW에서만 또는 IBM i용 Db2에서만 발생할 수 있다.

제로(성공)

0 성공

음수 값(오류)

-007 지정한 '문자'는 SQL 문에 유효한 문자가 아니다.
-010 문자열로 시작하는 문자열 상수가 올바르게 종료되지 않음.
-029 INT 조항 필요.
-060 잘못된 유형 사양: 사양
-084 허용되지 않는 SQL 문.
-101 그 진술은 너무 길거나 너무 복잡하다.
-102 끈 상수가 너무 길다.
-103 끈 상수가 너무 길다.맥스는 128자 입니다.
-104 SQL 문에 잘못된 기호가 발견됨
-105 끈 상수가 너무 길다.
-117 INSERT의 값 수가 열 수와 일치하지 않는다.
-119 GROUP BY 또는 HAVING 절의 오류.
-122 선택 목록의 열 또는 식이 잘못됨
-156 키워드 근처의 구문이 잘못됨.
-180 날짜/시간/시간 스탬프의 잘못된 데이터.
-181 날짜/시간/시간 스탬프의 잘못된 데이터.
-188 설명 문의 호스트 변수는 이름에 대한 올바른 문자열 표현이 아니다.
-199 지정한 키워드의 잘못된 사용.
-203 기둥-이름 참조가 모호함
-204 DB2에 정의되지 않은 개체.
-205 열 이름이 테이블에 없음
-206 SELECT의 어떤 테이블에도 열이 존재하지 않는다.
-207 잘못된 열 이름.
-208 열-이름이 결과 테이블의 일부가 아니므로 조항별 주문이 잘못됨
-209 모호한 열 이름
-216 SELECT에서 비교 양쪽의 식 수가 같지 않음.
-224 FETCH는 무감각 커서를 민감하게 만들 수 없다.
-229 SET LOCALE 문에 지정된 로케일을 찾을 수 없음.
-257 데이터 형식의 암묵적 변환은 허용되지 않는다.
-289 테이블스페이스에 DB2 공간이 부족함
-302 입력 변수 또는 매개변수 번호 위치 번호의 값이 잘못되었거나 목표 열 또는 목표 값에 비해 너무 큼
-303 데이터 유형이 비교할 수 없기 때문에 값을 출력 호스트 변수 위치 번호에 할당할 수 없음
-305 Null 표시기 필요.
-310 십진수 값이 null임
-311 Varchar, 삽입 또는 업데이트. -LEN 필드가 올바른 데이터 길이를 설정하지 않음.
-313 지정된 호스트 변수 수가 매개 변수 마커 수와 같지 않음.
-401 작업 피연산자의 데이터 형식은 호환되지 않는다.
-404 지정한 SQL 문에 너무 긴 문자열이 들어 있다.
-407 업데이트, 삽입 또는 설정 값이 null이지만 개체 열 이름 열에는 null 값을 포함할 수 없음
-408 값은 할당 대상의 데이터 유형과 호환되지 않는다.대상 이름은 "<name" 입니다.(****OBs: Para alguns casos o CAST resolve )
-413 숫자 데이터 유형 변환 중에 오버플로가 발생함
-414 첫 번째 피연산자가 문자열이 아니기 때문에 이와 유사한 술어는 무효다.
-415 설정된 연산자의 피연산자의 해당 열(열 번호)은 호환되지 않는다.
-418 매개 변수 마커를 사용할 수 없음.
-420 문자열 인수 값이 'function-name' 함수에 허용되지 않음
-421 조합 또는 조합의 피연산자 모두 동일한 수의 열을 가지지 여부
-433 데이터가 너무 크다
-438 진단 텍스트와 함께 응용 프로그램 상승 오류: 텍스트
-440 &1 in &2 in &gt; 루틴을 지정된 매개 변수로 찾을 수 없음지정된 이름과 호환 가능한 인수를 가진 함수 또는 프로시저를 찾을 수 없음.[1]
-482 그 절차는 로케이터를 반환하지 않았다.
-501 FETCH에서 커서가 열리지 않음.
-502 이미 열려 있는 커서 열기
-503 열 업데이트 지정이 필요하다.
-504 커서 이름이 선언되지 않음
-510 Update(업데이트) 또는 Delete(삭제) 문의 커서로 지정된 테이블은 수정할 수 없다.
-530 참조 무결성 때문에 INSERT/UPDATE가 차단
-532 참조 무결성(DELETE RESTRICTED 규칙)이 DELETE를 차단함.
-536 참조 무결성(DELETE RESTRICTED 규칙)이 DELETE를 차단함.
-545 INSERT/UPDATE를 방지하는 제약 조건을 확인하십시오.
-551 인증 실패.
-554 권한 부여 ID 또는 역할은 자신에게 권한을 부여할 수 없다.
-601 이미 존재하는 개체를 생성하려고 시도했음
-602 작성 인덱스에 지정된 열이 너무 많음
-603 테이블이 식별된 열 및 기간의 값에 대해 중복되는 행을 포함하므로 고유한 인덱스를 만들 수 없음
-604 데이터 유형 정의에서 잘못된 길이, 정밀도 또는 척도 속성을 지정함
-607 이 개체에 대한 작업 또는 옵션 작업이 정의되지 않음
-610 경고: 객체에 대한 생성/확인이 보류 중인 객체에 객체를 배치함
-611 테이블스페이스의 잠금 크기가 테이블스페이스 또는 테이블인 경우 lockmax 0만 지정할 수 있다.
-612 식별자는 중복된 이름이다.
-613 기본 키, 해시 키 또는 고유한 제약 조건이 너무 길거나 열과 주기가 너무 많음
-614 색인을 만들거나 변경할 수 없거나, 색인에 대한 열의 내부 길이의 합계가 허용 가능한 최대값보다 크기 때문에 열의 길이를 변경할 수 없음
-615 사용 중인 패키지에서는 작업 유형이 허용되지 않음
-616 obj-type1 obj-name1은 obj-type2 obj-name2에서 참조되므로 삭제할 수 없음
-617 유형 1 인덱스가 테이블에 유효하지 않음
-618 시스템 데이터베이스에서 작업이 허용되지 않음
-619 데이터베이스가 중지되지 않았기 때문에 작업이 허용되지 않음
-620 데이터베이스 유형 데이터베이스의 공간 유형 공간에는 stmt 유형 문의 키워드가 허용되지 않음
-621 중복 dbid dbid가 탐지되어 이전에 데이터베이스 이름에 할당됨
-622 혼합 데이터 설치 옵션이 no이므로 혼합 데이터가 유효하지 않은 경우
-623 클러스터가 테이블 이름에 유효하지 않음
-624 테이블 이름 테이블에는 이미 기본 키 또는 지정된 열과 마침표를 가진 고유한 제약 조건이 있음
-625 테이블 이름에 기본 키 또는 고유 키의 고유성을 적용하기 위한 인덱스가 없음
-625 경고: 테이블의 정의가 불완전하게 변경됨
-626 페이지 세트가 중지되지 않았기 때문에 변경 문은 실행 가능하지 않다.
-627 테이블 공간 또는 인덱스에 사용자 관리 데이터 세트가 있기 때문에 변경 문이 잘못됨
-628 그 조항들은 상호 배타적이다.
-629 외부 키 이름에 null 값을 포함할 수 없으므로 set null을 지정할 수 없음
-630 오류: WHERE NOT NULL 규격이 유형 1 인덱스에 대해 잘못됨
-631 외부 키 이름이 너무 길거나 열이 너무 많음
-632 DELETE 규칙 제한으로 인해 테이블을 테이블 이름의 종속 항목으로 정의할 수 없음
-633 DELETE 규칙은 DELETE 규칙이어야 함
-634 DELETE 규칙은 계단식이어서는 안 된다.
-635 DELETE 규칙은 다를 수 없거나 null로 설정할 수 없음
-636 파티션 부품 번호에 대해 지정된 범위가 잘못됨
-637 키워드 이름 키워드 또는 절 복제
-638 열 정의가 없으므로 테이블 이름을 만들 수 없음
-639 DELETE 규칙이 null로 설정된 외부 키의 null 가능 열은 분할된 인덱스의 키 열일 수 없음
-640 이 테이블스페이스의 테이블에 유형 1 인덱스가 있기 때문에 잠금 크기 조정 행을 지정할 수 없음
-642 고유한 제약 조건의 너무 많은 열
-643 체크 제약 조건 또는 인덱스 열의 식 값이 최대 허용 길이 키 식을 초과함
-644 문 stmt-type에서 키워드 또는 절 키워드에 대해 잘못된 값이 지정됨
-645 인덱스 키에 NULL 값을 포함할 수 없으므로 WHERE NOT NULL이 무시됨
-646 테이블 이름에 테이블이 이미 포함되어 있으므로 테이블 이름을 지정된 테이블 공간 테이블 공간 이름에 만들 수 없음
-647 암시적 또는 명시적 테이블스페이스 또는 인덱스 스페이스 이름에 대한 버퍼풀 bp-name이(가) 활성화되지 않음
-650 변경 진술을 실행할 수 없음, 이유 코드 저작권 2014 TheAmericanProgrammer.com 무단 복사가 금지됨
-651 테이블 설명이 개체 설명자의 최대 크기를 초과한다.
-652 설치 정의 편집 또는 유효성 검사 절차 pro-name 위반
-653 분할된 테이블 공간의 테이블 이름 tspace-name은 분할된 인덱스가 생성되지 않았으므로 사용할 수 없음
-655 저장소 그룹에 특정 볼륨 ID와 비특정 볼륨 ID가 모두 있을 수 있으므로 stogroup 생성 또는 변경은 유효하지 않음
-658 문구를 사용하여 객체 유형을 삭제할 수 없음
-660 키 제한이 지정되지 않았으므로 분할된 테이블 공간 tspace-name에 인덱스 이름을 만들거나 변경할 수 없음
-661 파티션 규격 수가 테이블 공간의 파티션 수와 같지 않기 때문에 분할된 테이블 공간 tspace-name에 개체 유형 개체 이름을 만들 수 없음
-662 분할된 인덱스는 테이블 공간에 만들 수 없거나 테이블 공간은 인덱스를 제어할 수 없음. 테이블 공간 tspace-name, 이유 코드
-663 키 제한 값 수가 0이거나 인덱스 이름 키의 열 수보다 큼
-664 분할된 인덱스에 대한 제한 키 필드의 내부 길이가 인덱스 관리자가 지정한 길이를 초과함
-665 변경문의 파티션 절이 생략되었거나 잘못됨
-666 함수가 진행 중이기 때문에 stmt-properties 객체를 실행할 수 없음
-667 분할된 테이블 공간에 대한 클러스터링 색인을 명시적으로 삭제할 수 없음
-668 테이블에 행 속성 감도로 정의된 편집 절차가 있기 때문에 열을 테이블에 추가할 수 없음
-669 개체를 명시적으로 삭제할 수 없음.이유 코드
-670 테이블의 기록 길이가 페이지 크기 제한을 초과하다.
-671 테이블 공간의 버퍼풀 속성은 테이블 공간의 페이지 크기를 변경하므로 지정된 대로 변경할 수 없음
-672 table_name 테이블에서 작업 드랍이 허용되지 않음
-676 지수의 물리적 특성은 지정된 문장과 양립할 수 없다.그 진술은 실패했다.이유 코드
-677 버퍼 풀 확장을 위한 가상 스토리지 부족
-678 인덱스 제한 키에 지정된 상수는 해당 열 이름의 데이터 유형 데이터 유형을 준수해야 한다.
-679 드롭이 오브젝트에 보류 중이므로 오브젝트 이름을 작성할 수 없음
-680 테이블, 뷰 또는 테이블 함수에 대해 지정된 열이 너무 많음
-681 설치 정의 필드 절차를 위반하는 열 열 이름.rt: 반환 코드, rs: 이유 코드, msg: 메시지 표시
-682 필드 프로시저 이름을 로드할 수 없음
-683 열, 고유 유형, 함수 또는 절차 데이터에 대한 규격은 호환되지 않는 절을 포함한다.
-684 상수 목록 시작 문자열이 너무 길다.
-685 잘못된 필드 유형, 열 이름
-686 필드 프로시저로 정의된 열은 필드 프로시저가 다른 열과 비교할 수 없음
-687 비교할 수 없는 필드 유형
-688 필드 절차, 열 이름, msgno에서 반환된 잘못된 데이터
-689 종속 테이블에 대해 정의된 열이 너무 많음
-690 이 문장은 데이터 정의 제어 지원에서 거부된다.이유 코드
-691 필수 등록 테이블 이름이 없음
-692 ddl 등록 테이블 이름에 필요한 고유 인덱스 이름이 없음
-693 ddl 등록 테이블 또는 색인 이름의 열 이름이 올바르게 정의되지 않음
-694 ddl 등록 테이블 이름에 드롭이 보류 중이므로 스키마 문을 실행할 수 없음
-694 ddl 등록 테이블에 드롭이 보류 중이므로 ddl 문을 실행할 수 없음
-695 테이블 이름의 보안 레이블 열에 잘못된 값 seclabel이 지정됨
-696 트리거 트리거 이름의 정의에는 잘못된 상관 관계 이름 또는 전환 테이블 이름 사용이 포함된다.이유 코드=이유 코드
-697 각 문 절에 대해 으로 정의된 트리거에는 이전 또는 새 상관 관계 이름이 허용되지 않는다.이전 절이 있는 트리거에는 old_table 또는 new_table 이름이 허용되지 않는다.
-747 테이블을 사용할 수 없다.
-803 삽입 또는 업데이트 시 키를 복제하십시오.
-804 SQL 문에 대한 입력 매개 변수 오류.
-805 DBRM 또는 패키지를 계획에서 찾을 수 없음
-811 SELECT INT에서 둘 이상의 행이 검색됨.
-818 계획 및 프로그램: 타임스탬프 불일치
-902 Essential Control Block(RDA/CT)에 대한 포인터 값 0, Rebind Required.이는 DB 볼륨 중 하나가 여전히 존재하지만 액세스할 수 없는 경우에도 발생할 수 있다.
-904 사용할 수 없는 리소스.다른 사람이 당신의 데이터를 잠그고 있다.
-911 교착 상태 또는 시간 초과.롤백이 완료되었다.
-913 교착 상태 또는 시간 초과.롤백 없음.
-922 권한 부여 필요.
-924 DB2 연결 내부 오류.
-927 언어 인터페이스가 호출되었지만 연결이 되지 않았다.
-955 명령문을 처리하기 위해 메모리를 할당할 수 없다.
-964 트랜잭션 로그 공간이 고갈되거나 활성 트랜잭션 수가 일시적으로 증가함
-970 루트에 의해 소유된 DB2 파일 시스템/Db2 파일 시스템에 대한 잘못된(또한 누락됨) 권한.
-998 트랜잭션 또는 경험적 접근 처리 중 오류 발생.
-2310 유틸리티가 통계를 생성할 수 없음
-3508 스크래치 공간에 액세스하는 중 로드 오류 발생.로드 또는 로드 쿼리 중에 "TEMP_FILE" 형식의 파일 또는 경로에 액세스하는 중 오류 발생.로드 작업의 msg 파일이 저장되는 스크래치 디렉터리에는 필요한 권한이 없다.
-7008 지정된 개체가 요청된 작업에 유효하지 않음.
-10330 데이터베이스 변경에 대한 사용 권한 거부.시스템 관리자에게 문의하십시오.
-30090 응용 프로그램 실행 환경에 대한 원격 작업이 잘못됨

[1]

양의 값(경고)

+98 동적 SQL 문은 세미콜론으로 끝난다.
+100 행을 찾을 수 없거나 커서 끝.
+222 DELETE 문 내에서 행을 가져오려고 하는 중.
+223 UPDATE 문 내의 행을 가져오려고 하는 중.
+231 전후로 가져오되 유효한 행에는 가져오지 마십시오.
+304 데이터 유형(데이터 유형 1)이 있는 값은 데이터 유형(데이터 유형 2)이 있는 위치(위치 번호)의 호스트 변수 범위 내에 있지 않기 때문에 호스트 변수에 할당할 수 없음
+354 행 집합 가져오기 문은 하나 이상의 데이터 행을 반환했을 수 있다.그러나 하나 이상의 경고 조건도 마주쳤다.발생한 조건에 대한 자세한 내용은 get diagnostics 문을 사용하십시오.
+562 허가권자가 이미 허가권자로부터 권한을 가지고 있기 때문에 특권의 부여는 무시되었다.
+802 null 지표는 산술적으로 -2로 설정되었다.

참조

  1. ^ "IBM Docs".