내장 된 SQL 인터페이스는 단순하고 복잡한 것을 제공합니다. 프로그램에서 탁월한 조건을 처리하는 방법. 첫 번째 메소드는 특정 일 때 메시지가 자동으로 인쇄되도록합니다. 조건이 발생합니다. 예를 들어:
SQLERROR SQLPRINT; 일 때마다 EXEC SQL
또는
sqlprint를 찾지 못할 때마다 Exec SQL;
이 오류 처리는 전체적으로 활성화되어 있습니다 프로그램.
참고 :이것은아님철저한 예 사용법exec sql 언제라도진술. 사용의 추가 예는 SQL에서 찾을 수 있습니다 매뉴얼 (예 :Lan Times Guide SQL작성자 Groff and Weinberg).
보다 강력한 오류 처리를 위해 임베디드 SQL 인터페이스
a 제공struct및 변수
이름SQLCA
다음과 같이 :
struct sqlca char sqlcaid [8]; 긴 sqlabc; 긴 sqlcode; 구조 int sqlerrml; char sqlerrmc [70]; sqlerrm; char sqlerrp [8]; 긴 sqlerrd [6]; / * 0 : 빈 */ / * 1 : 해당되는 경우 가공 된 튜플의 OID */ / * 2 : 인서트에서 처리 된 행 수, 업데이트 */ / * 또는 명령문 삭제 */ / * 3 : 빈 */ / * 4 : 빈 */ / * 5 : 빈 */ char sqlwarn [8]; / * 0 : 'W' */인 경우 'w'로 설정 / * 1 : 'w'가 적어도 하나의 문자 문자열 */ / * 값은 */일 때 잘 렸습니다. /* 호스트 변수에 저장되었습니다. */ / * 2 : 빈 */ / * 3 : 빈 */ / * 4 : 빈 */ / * 5 : 빈 */ / * 6 : 빈 */ / * 7 : 빈 */ char sqlext [8]; sqlca;
(많은 빈 필드가 미래에 사용될 수 있습니다. 풀어 주다.)
마지막에서 오류가 발생하지 않은 경우SQLStatement,sqlca.sqlcode가 0 (입니다.ecpg_no_error). 만약에sqlca.sqlcode는 0보다 작습니다. 이것은 심각합니다 데이터베이스 정의와 같은 오류는 쿼리와 일치하지 않습니다. 만약에 그것은 0보다 크고 테이블처럼 정상 오류입니다. 요청 된 행을 포함하지 않습니다.
SQLCA.SQLERRM.SQLERRMCa 오류를 설명하는 문자열. 문자열은 선으로 끝납니다 소스 파일의 숫자.
이것은 발생할 수있는 오류입니다.
일반적으로 발생해서는 안됩니다. 이것은 당신의 가상을 나타냅니다 메모리가 소진되었습니다.
일반적으로 발생해서는 안됩니다. 이것은 사전 처리기는 도서관이하는 일을 생성했습니다 알지 못합니다. 아마도 당신은 양립 할 수없는 실행 중입니다 사전 처리기 및 도서관의 버전.
이것은 서버가 더 많은 인수를 반환했음을 의미합니다 일치하는 변수가있는 것보다. 아마도 당신은 잊었을 것입니다 의 호스트 변수 몇 개in : var1, : var2List.
이것은 서버가 더 적은 인수를 반환했음을 의미합니다 호스트 변수가있는 것보다. 아마도 당신은 호스트가 너무 많을 것입니다 의 변수in : var1, : var2목록.
이것은 쿼리가 여러 행을 반환했지만 지정된 변수는 배열이 아닙니다. 그만큼select명령은 독특하지 않았습니다.
이것은 호스트 변수가 유형이라는 것을 의미합니다int의 필드PostgreSQL데이터베이스는 다른 유형입니다
그리고로 해석 할 수없는 값을 포함합니다.int. 라이브러리 사용strtol ()
이 변환의 경우
이것은 호스트 변수가 유형이라는 것을 의미합니다서명되지 않은 int의 필드PostgreSQL데이터베이스는 다른 유형입니다
그리고로 해석 할 수없는 값을 포함합니다.서명되지 않은 int. 라이브러리 사용strtoul ()
이것
변환.
이것은 호스트 변수가 유형이라는 것을 의미합니다float그리고의 필드범퍼카 토토데이터베이스는 다른 유형입니다
A로 해석 할 수없는 값을 포함합니다.float. 라이브러리 사용strtod ()
이 변환의 경우
이것은 호스트 변수가 유형임을 의미합니다bool그리고의 필드PostgreSQL데이터베이스는 아닙니다't'NOR'f'.
쿼리가 비어있었습니다. (이것은 일반적으로 an에서 발생할 수 없습니다 임베디드 SQL 프로그램이므로 내부를 가리킬 수 있습니다. 오류.)
널 값이 반환되었고 널 표시기 변수가 없습니다. 공급되었습니다.
일반 변수가 필요한 장소에서 사용되었습니다. 배열.
데이터베이스는 장소에서 일반 변수를 반환했습니다 배열 값이 필요합니다.
프로그램은 그렇지 않은 연결에 액세스하려고했습니다. 존재하다.
프로그램이 존재하는 연결에 액세스하려고했습니다. 그러나 열려 있지 않습니다.
18488_18556
지정된 설명자를 찾을 수 없었습니다. 진술 당신은 사용하려고 노력하고 있습니다.
지정된 서술자 지수는 범위를 벗어났습니다.
지정된 설명자를 찾을 수 없었습니다. 진술 당신은 사용하려고 노력하고 있습니다.
데이터베이스는 숫자 값과 변수를 반환했습니다 숫자가 아니 었습니다.
데이터베이스는 수치가 아닌 값을 반환했습니다 변수는 숫자였습니다.
일부PostgreSQL오류. 메시지에는의 오류 메시지가 포함됩니다.PostgreSQL백엔드.
PostgreSQL신호 우리는 시작, 커밋 또는 롤백을 할 수 없다는 것입니다 거래.
데이터베이스에 대한 연결이 작동하지 않았습니다.
이것은 A"정상"오류 당신이 쿼리하는 것을 찾을 수 없다고 말합니다. 커서의 끝에 있습니다.