DB2용 정적 SQL 문제 해결
이 항목에서는 Microsoft ADO.NET Provider for DB2(데이터 공급자)에서 DB2 패키지용 정적 SQL 기능을 사용할 때 발생할 수 있는 일반적인 오류 및 코딩 실수에 대해 설명합니다.
일반 오류
다음 표에서는 발생할 수 있는 DB2 서버 오류와 이 오류를 해결하기 위해 수행해야 하는 작업에 대해 설명합니다.
SQLCODE | 작업 |
---|---|
SQLCODE -104(잘못된 문) | - 데이터의 유효성을 검사하고 데이터베이스 스키마와 일치합니다. - 명령 요소가 패키지 스키마와 일치하는지 확인합니다. |
SQLCODE -204(개체를 찾을 수 없음) | 정규화된 개체 이름(4부 또는 별칭)을 확인합니다. |
SQLCODE -440(잘못된 매개 변수) | 명령 요소가 패키지 스키마와 일치하는지 확인합니다. |
SQLCODE -501(커서가 열리지 않음) | 명령에 CALL STATIC이 포함되어 있는지 확인합니다. |
SQLCODE -551(권한 부족) | CREATE, BIND 및 EXECUTE 패키지에 대한 권한이 설정되어 있는지 확인합니다. |
SQLCODE -601(개체 이름이 고유하지 않음) | 명명 규칙의 고유성을 확인합니다. |
일반적인 코딩 실수
다음 표에서는 기능 영역별 일반적인 코딩 실수에 대해 설명합니다.
영역 | Description |
---|---|
XML 문서 | - 모든 입력 매개 변수에는 매개 변수 요소가 필요합니다. 각 출력 열에는 열 요소가 필요합니다. - 커서 이름은 패키지 내에서 고유해야 합니다. - 요소가 닫혀 있지 않거나 일치하지 않습니다. |
IBM i 격리 수준용 DB2 | HIS 2010에서 지원되는 격리 수준은 XML 문서에서 "IsolationLevel="NoCommit으로 지정해야 하는 NC(No Commit)입니다. |
저장 프로시저 및 별칭 겹침 | - 패키지 이름, 섹션 번호 또는 패키지 별칭이 고유하지 않으면 패키지 만들기가 실패합니다. - 패키지 만들기에 성공하지만 별칭 이름이 저장 프로시저 이름과 같으면 런타임 오류가 발생할 수 있습니다(예: 잘못된 매개 변수의 경우 SQLCODE -440). 또는 DB2 서버가 예기치 않은 결과 집합을 반환할 수 있습니다. |
별칭 이름 없음 | - 메타데이터 파일에 별칭 이름이 없는 경우 Microsoft 클라이언트는 문을 저장 프로시저로 실행합니다. - 이름이 같은 저장 프로시저가 있는 경우 저장 프로시저가 실행되고 프로그램에서 예기치 않은 결과가 발생할 수 있습니다. - 같은 이름의 저장 프로시저가 없으면 데이터베이스 서버에서 개체 이름이 정의되지 않은 오류(SQLCODE -204)를 반환합니다. |