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

42.8. PL/범퍼카 토토에서의 오류 처리

pl/범퍼카 토토 함수에서 또는 호출 된 범퍼카 토토 코드는 유효하지 않은 작업을 실행하거나 범퍼카 토토을 사용하여 오류를 생성하여 오류를 일으킬 수 있습니다.오류명령 또는 pl/범퍼카 토토 'selog명령. 이러한 오류는 TCL을 사용하여 TCL 내에서 잡힐 수 있습니다.캐치명령. 잡히지 않았지만 PL/TCL 기능의 최상위 수준으로 전파 할 수 있다면 데이터베이스 오류로 변합니다.

반대로 PL/TCL 내에서 발생하는 데이터베이스 오류SPI_EXEC, SPI_PREPARESPI_EXECP명령은 TCL 오류로보고되므로 TCL에 의해 잡을 수 있습니다캐치명령. 다시 말하지만, 잡히지 않고 최상위로 전파되면 데이터베이스 오류로 돌아갑니다.

범퍼카 토토 제공ErrorCodeTCL 프로그램이 쉽게 해석하기 쉬운 양식의 오류에 대한 추가 정보를 나타낼 수있는 변수. 내용은 TCL 목록 형식이며 첫 번째 단어는 오류를보고하는 서브 시스템 또는 라이브러리를 식별합니다. 그 외에도 내용은 개별 서브 시스템 또는 라이브러리에 맡겨집니다. PL/TCL 명령에 의해보고 된 데이터베이스 오류의 경우 첫 번째 단어는입니다.Postgres, 두 번째 단어는 Postgres 버전 번호이며 추가 단어는 오류에 대한 자세한 정보를 제공하는 필드 이름/값 쌍입니다. 전지sqlstate, 조건메시지항상 제공됩니다 (처음 두 개는 오류 코드 및 조건 이름을 나타냅니다.PostgreSQL : 문서 : 9.6 : PostgreSQL 롤 토토 코드). 존재할 수있는 필드는 다음과 같습니다.세부 사항, 힌트, 컨텍스트, 스키마, 테이블, , DataType, 제약 조건, Statement, cursor_position, filename, LinenofuncName.

pl/범퍼카 토토과 함께 일하는 편리한 방법ErrorCode정보는 필드 이름이 배열 첨자가되도록 배열에로드하는 것입니다. 그렇게하는 코드는

if [catch spi_exec $ sql_command] 
    if [lindex $ :: ErrorCode 0] == "postgres" 
        배열 세트 ERRERARRAY $ :: ERRORCODE
        if $ errorArray (조건) == "undefined_table" 
            # 누락 된 테이블을 처리하십시오
         또 다른 
            # 다른 유형의 SQL 오류를 처리하십시오

(이중 콜론은 명시 적으로 명시 적으로ErrorCode글로벌 변수입니다.)