다음을 통해 공유


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)를 반환합니다.