이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 34.8. 토토 핫 처리버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

4.6. 오류 처리

내장 된 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 오류를 설명하는 문자열. 문자열은 선으로 끝납니다 소스 파일의 숫자.

이것은 발생할 수있는 오류입니다.

-12, 메모리에서 줄을 서십시오 %디.

일반적으로 발생해서는 안됩니다. 이것은 당신의 가상을 나타냅니다 메모리가 소진되었습니다.

-200 (ecpg_unsupported) : 지원되지 않는 유형 %s 라인 %d.

일반적으로 발생해서는 안됩니다. 이것은 사전 처리기는 도서관이하는 일을 생성했습니다 알지 못합니다. 아마도 당신은 양립 할 수없는 실행 중입니다 사전 처리기 및 도서관의 버전.

-201 (ecpg_too_many_arguments) : 너무 많은 인수 라인 %디.

이것은 서버가 더 많은 인수를 반환했음을 의미합니다 일치하는 변수가있는 것보다. 아마도 당신은 잊었을 것입니다 의 호스트 변수 몇 개in : var1, : var2List.

-202 (ecpg_too_few_arguments) : 너무 적은 인수 라인 %디.

이것은 서버가 더 적은 인수를 반환했음을 의미합니다 호스트 변수가있는 것보다. 아마도 당신은 호스트가 너무 많을 것입니다 의 변수in : var1, : var2목록.

-203 (ECPG_TOO_MANY_MATCHES) : 너무 많은 일치 라인 %디.

이것은 쿼리가 여러 행을 반환했지만 지정된 변수는 배열이 아닙니다. 그만큼select명령은 독특하지 않았습니다.

-204 (ecpg_int_format) : 그렇지 않습니다 int type을 올바르게 형식으로 형식화합니다 : %s line %d.

이것은 호스트 변수가 유형이라는 것을 의미합니다int의 필드PostgreSQL데이터베이스는 다른 유형입니다 그리고로 해석 할 수없는 값을 포함합니다.int. 라이브러리 사용strtol ()이 변환의 경우

-205 (ecpg_uint_format) : 그렇지 않습니다 서명되지 않은 유형을 올바르게 포맷합니다 : %s line %d.

이것은 호스트 변수가 유형이라는 것을 의미합니다서명되지 않은 int의 필드PostgreSQL데이터베이스는 다른 유형입니다 그리고로 해석 할 수없는 값을 포함합니다.서명되지 않은 int. 라이브러리 사용strtoul ()이것 변환.

-206 (ecpg_float_format) : 플로팅 지점 유형 : %S 라인을 올바르게 형식화하지 않습니다 %디.

이것은 호스트 변수가 유형이라는 것을 의미합니다float그리고의 필드범퍼카 토토데이터베이스는 다른 유형입니다 A로 해석 할 수없는 값을 포함합니다.float. 라이브러리 사용strtod ()이 변환의 경우

-207 (ecpg_convert_bool) : 라인에서 %s를 bool로 변환 할 수 없습니다. d.

이것은 호스트 변수가 유형임을 의미합니다bool그리고의 필드PostgreSQL데이터베이스는 아닙니다't'NOR'f'.

-208 (ecpg_empty) : 비어 있습니다 쿼리 라인 %d.

쿼리가 비어있었습니다. (이것은 일반적으로 an에서 발생할 수 없습니다 임베디드 SQL 프로그램이므로 내부를 가리킬 수 있습니다. 오류.)

-209 (ecpg_missing_indicator) : 표시기가없는 널 값 라인 %d.

널 값이 반환되었고 널 표시기 변수가 없습니다. 공급되었습니다.

-210 (ecpg_no_array) : 변수는 라인의 배열이 아닙니다. d.

일반 변수가 필요한 장소에서 사용되었습니다. 배열.

-211 (ecpg_data_not_array) : 백엔드에서 읽은 데이터는 라인의 배열이 아닙니다. %디.

데이터베이스는 장소에서 일반 변수를 반환했습니다 배열 값이 필요합니다.

-220 (ECPG_NO_CONN) : 그러한 것은 아닙니다 연결 %s 라인 %d.

프로그램은 그렇지 않은 연결에 액세스하려고했습니다. 존재하다.

-221 (ECPG_NOT_CONN) : 그렇지 않습니다 라인에 연결된 %d.

프로그램이 존재하는 연결에 액세스하려고했습니다. 그러나 열려 있지 않습니다.

-230 (ecpg_invalid_stmt) : 유효하지 않은 명령문 이름 %s 라인 %d.

18488_18556

-240 (ecpg_unknown_descriptor) : Descriptor %s는 줄을 찾을 수 없습니다 %디.

지정된 설명자를 찾을 수 없었습니다. 진술 당신은 사용하려고 노력하고 있습니다.

-241 (ecpg_invalid_descriptor_index) : 디스크립터 인덱스에서 라인 범위 %d.

지정된 서술자 지수는 범위를 벗어났습니다.

-242 (ecpg_unknown_descriptor_item) : descriptor %s를 찾을 수 없습니다 라인 %d.

지정된 설명자를 찾을 수 없었습니다. 진술 당신은 사용하려고 노력하고 있습니다.

-243 (ecpg_var_not_numeric) : 변수는 라인의 숫자 유형이 아닙니다. d.

데이터베이스는 숫자 값과 변수를 반환했습니다 숫자가 아니 었습니다.

-244 (ECPG_VAR_NOT_CHAR) : 변수는 라인의 문자 유형이 아닙니다. %d.

데이터베이스는 수치가 아닌 값을 반환했습니다 변수는 숫자였습니다.

-400 (ECPG_PGSQL) : Postgres 오류 : %s 라인 %d.

일부PostgreSQL오류. 메시지에는의 오류 메시지가 포함됩니다.PostgreSQL백엔드.

-401 (ECPG_TRANS) : 오류가 발생합니다 거래 처리 라인 %d.

PostgreSQL신호 우리는 시작, 커밋 또는 롤백을 할 수 없다는 것입니다 거래.

-402 (ECPG_CONNECT) : 할 수 있습니다 데이터베이스 %s에 연결되지 않음 %d.

데이터베이스에 대한 연결이 작동하지 않았습니다.

100 (ECPG_NOT_FOUND) : 데이터 찾을 수 없음 line %d.

이것은 A"정상"오류 당신이 쿼리하는 것을 찾을 수 없다고 말합니다. 커서의 끝에 있습니다.