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

43.8. PL/토토 핫에서의 오류 처리

pl/토토 핫 함수 내에서 또는 호출 된 토토 핫 코드는 유효하지 않은 작업을 실행하거나 토토 핫을 사용하여 오류를 생성하여 오류를 일으킬 수 있습니다오류명령 또는 pl/토토 핫 'selog명령. 이러한 오류는 TCL을 사용하여 TCL 내에서 잡힐 수 있습니다.캐치명령. 오류가 잡히지 않았지만 PL/TCL 기능의 최상위 수준으로 전파 할 수있는 경우 기능의 호출 쿼리에서 SQL 오류로보고됩니다..

반대로, PL/TCL 내에서 발생하는 SQL 오류SPI_EXEC, SPI_PREPARESPI_EXECP명령은 TCL 오류로보고되므로 TCL에 의해 잡을 수 있습니다캐치명령. (이러한 PL/TCL 명령 각각은 하위 트랜잭션에서 SQL 작업을 실행하여 오류로 롤백되어 부분적으로 완성 된 작업이 자동으로 정리됩니다.) 오류가 잡히지 않고 최상위 레벨로 전파되면 SQL 오류로 돌아갑니다..

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

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

if [catch spi_exec $ sql_command]

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