이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 34.8. 토토 핫 처리버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

4.6. 범퍼카 토토 처리

내장 SQL 인터페이스는 단순하면서도 복잡한 프로그램에서 예외적인 상황을 처리하는 방법. 첫 번째 메소드를 사용하면 특정 메시지가 자동으로 인쇄됩니다. 상태가 발생합니다. 예를 들면:

sqlerror sqlprint가 발생할 때마다 SQL을 실행합니다.

또는

SQLprint를 찾을 수 없을 때마다 EXEC SQL;

이 범퍼카 토토 처리는 전체 기간 동안 활성화된 상태로 유지됩니다. 프로그램.

참고:이것은아님완전한 예 에 대한 사용법언제든지 SQL을 실행문장. 추가 사용 예는 SQL에서 찾을 수 있습니다. 설명서(예:LAN TIMES 가이드 SQL작성: Groff 및 Weinberg).

보다 강력한 오류 처리를 위해 내장 SQL 인터페이스 제공합니다구조체그리고 다음과 같은 변수 이름sqlca다음과 같습니다:

구조체 sqlca

    숯 sqlcaid[8];
    긴 sqlabc;
    긴 SQL코드;
    구조체

        int sqlerrml;
        숯 sqlerrmc[70];
     sqlerrm;
    숯 sqlerrp[8];

    긴 sqlerrd[6];
    /* 0: 비어 있음 */
    /* 1: 해당되는 경우 처리된 튜플의 OID */
    /* 2: INSERT, UPDATE에서 처리된 행 수 */
    /* 또는 DELETE 문 */
    /* 3: 비어 있음 */
    /* 4: 비어 있음 */
    /* 5: 비어 있음 */

    숯 sqlwarn[8];
    /* 0: 하나라도 'W'이면 'W'로 설정 */
    /* 1: 'W'가 하나 이상의 문자열인 경우 */
    /* 값이 잘렸을 때 */
    /* 호스트 변수에 저장됩니다.                  */
    /* 2: 비어 있음 */
    /* 3: 비어 있음 */
    /* 4: 비어 있음 */
    /* 5: 비어 있음 */
    /* 6: 비어 있음 */
    /* 7: 비어 있음 */

    char sqlext[8];
 sqlca;

(미래에는 빈 필드가 많이 사용될 수 있습니다. 릴리스합니다.)

마지막에 범퍼카 토토가 발생하지 않은 경우SQL성명,sqlca.sqlcode0이 됩니다(ECPG_NO_ERROR). 만일sqlca.sqlcode0보다 작으면 심각한 문제입니다 데이터베이스 정의가 쿼리와 일치하지 않는 것과 같은 범퍼카 토토입니다. 만약에 0보다 크면 테이블에서와 같이 정상적인 범퍼카 토토입니다. 요청한 행이 포함되어 있지 않습니다.

sqlca.sqlerrm.sqlerrmc다음을 포함합니다 오류를 설명하는 문자열입니다. 문자열은 다음 줄로 끝납니다. 소스 파일의 번호입니다.

다음은 발생할 수 있는 오류입니다:

-12, 라인 메모리 부족 %d.

일반적으로 발생해서는 안 됩니다. 이는 귀하의 가상을 나타냅니다. 메모리가 부족합니다.

-200 (ECPG_UNSUPPORTED): %d행에서 지원되지 않는 유형 %s입니다.

일반적으로 발생해서는 안 됩니다. 이는 다음을 나타냅니다. 전처리기가 라이브러리가 수행하는 작업을 생성했습니다. 에 대해 모른다. 아마도 당신은 호환되지 않는 실행 중입니다 전처리기 및 라이브러리의 버전입니다.

-201 (ECPG_TOO_MANY_ARGUMENTS): 인수 줄이 너무 많습니다. %d.

이는 서버가 더 많은 인수를 반환했음을 의미합니다 일치하는 변수가 있는 것보다 어쩌면 당신은 잊어버린 것 같아요 몇 가지 호스트 변수는INTO :var1,:var2목록.

-202 (ECPG_TOO_FEW_ARGUMENTS): 인수 줄이 너무 적습니다. %d.

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

-203 (ECPG_TOO_MANY_MATCHES): 일치 항목이 너무 많습니다. %d.

이는 쿼리가 여러 행을 반환했지만 지정된 변수는 배열이 아닙니다.선택명령이 고유하지 않았습니다.

-204 (ECPG_INT_FORMAT): 아님 올바른 형식의 int 유형: %s 라인 %d.

이것은 호스트 변수가 유형임을 의미합니다.int및의 필드PostgreSQL데이터베이스가 다른 유형입니다 로 해석될 수 없는 값이 포함되어 있습니다.int. 도서관은strtol()이 변환을 위해.

-205 (ECPG_UINT_FORMAT): 아님 올바른 형식의 부호 없는 유형: %s 라인 %d.

이것은 호스트 변수가 유형임을 의미합니다.부호 없는 정수및 다음 필드포스트그레SQL데이터베이스가 다른 유형입니다 로 해석될 수 없는 값이 포함되어 있습니다.부호 없는 정수. 도서관은strtoul()이것을 위해 전환.

-206(ECPG_FLOAT_FORMAT): 형식이 잘못된 부동 소수점 유형: %s 라인 %d.

이것은 호스트 변수가 유형임을 의미합니다.플로트그리고의 필드PostgreSQL데이터베이스가 다른 유형입니다 로 해석될 수 없는 값을 포함하고 있습니다.플로트. 도서관은스트르토드()이 변환을 위해.

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

이것은 호스트 변수가 유형임을 의미합니다.부울및의 필드PostgreSQL데이터베이스는 둘 다 아님''아니요'f'.

-208 (ECPG_EMPTY): 비어 있음 쿼리 라인 %d.

쿼리가 비어있습니다. (이런 일은 일반적으로 Embedded SQL 프로그램이므로 내부를 가리킬 수 있습니다. 오류입니다.)

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

Null 값이 반환되었으며 Null 표시 변수가 없습니다. 공급받았습니다.

-210 (ECPG_NO_ARRAY): 변수가 %d행의 배열이 아닙니다.

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

-211(ECPG_DATA_NOT_ARRAY): 백엔드에서 읽은 데이터가 라인 배열이 아닙니다. %d.

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

-220 (ECPG_NO_CONN): 해당 없음 %d번 라인의 %s 연결입니다.

프로그램이 연결되지 않은 연결에 접근하려고 했습니다. 존재합니다.

-221 (ECPG_NOT_CONN): 아님 %d번 라인에 연결되었습니다.

프로그램이 존재하는 연결에 접근을 시도했습니다. 하지만 열려 있지 않습니다.

-230(ECPG_INVALID_STMT): %d행의 명령문 이름 %s이(가) 잘못되었습니다.

당신이 사용하려는 명령문은 유효하지 않습니다. 준비했습니다.

-240 (ECPG_UNKNOWN_DESCRIPTOR): 설명자 %s을(를) 줄에서 찾을 수 없습니다. %d.

지정된 설명자를 찾을 수 없습니다. 성명서 사용하려는 제품이 준비되지 않았습니다.

-241 (ECPG_INVALID_DESCRIPTOR_INDEX): 설명자 인덱스가 다음에서 벗어났습니다. 라인 %d의 범위입니다.

지정된 설명자 인덱스가 범위를 벗어났습니다.

-242 (ECPG_UNKNOWN_DESCRIPTOR_ITEM): 설명자 %s을(를) 찾을 수 없습니다. 라인 %d.

지정된 설명자를 찾을 수 없습니다. 성명서 사용하려는 제품이 준비되지 않았습니다.

-243 (ECPG_VAR_NOT_NUMERIC): 변수가 %d행의 숫자 유형이 아닙니다.

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

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

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

-400 (ECPG_PGSQL): 포스트그레스 오류: %s 라인 %d.

일부PostgreSQL오류. 메시지에는 다음의 오류 메시지가 포함되어 있습니다.포스트그레SQL백엔드.

-401 (ECPG_TRANS): 오류 거래 처리 라인 %d.

포스트그레SQL신호를 받았습니다 시작, 커밋 또는 롤백할 수 없습니다. 거래.

-402 (ECPG_CONNECT): 가능 %d 라인의 데이터베이스 %s에 연결되지 않았습니다.

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

100 (ECPG_NOT_FOUND): 데이터 %d행을 찾을 수 없습니다.

이것은"정상"범퍼카 토토가 발생했습니다 쿼리하는 내용을 찾을 수 없거나 커서 끝에 있습니다.