pl/토토 핫 함수 내에서 또는 호출 된 토토 핫 코드는 유효하지 않은 작업을 실행하거나 토토 핫을 사용하여 오류를 생성하여 오류를 일으킬 수 있습니다오류
명령 또는 pl/토토 핫 'selog
명령. 이러한 오류는 TCL을 사용하여 TCL 내에서 잡힐 수 있습니다.캐치
명령. 오류가 잡히지 않았지만 PL/TCL 기능의 최상위 수준으로 전파 할 수있는 경우 기능의 호출 쿼리에서 SQL 오류로보고됩니다..
반대로, PL/TCL 내에서 발생하는 SQL 오류SPI_EXEC
, SPI_PREPARE
및SPI_EXECP
명령은 TCL 오류로보고되므로 TCL에 의해 잡을 수 있습니다캐치
명령. (이러한 PL/TCL 명령 각각은 하위 트랜잭션에서 SQL 작업을 실행하여 오류로 롤백되어 부분적으로 완성 된 작업이 자동으로 정리됩니다.) 오류가 잡히지 않고 최상위 레벨로 전파되면 SQL 오류로 돌아갑니다..
토토 핫 제공ErrorCode
TCL 프로그램이 쉽게 해석하기 쉬운 양식의 오류에 대한 추가 정보를 나타낼 수있는 변수. 내용은 TCL 목록 형식이며 첫 번째 단어는 오류를보고하는 서브 시스템 또는 라이브러리를 식별합니다.Postgres
, 두 번째 단어는 PostgreSQL 버전 번호이며 추가 단어는 오류에 대한 자세한 정보를 제공하는 필드 이름/값 쌍입니다. 전지sqlstate
, 조건
및메시지
항상 제공됩니다 (첫 번째 두 개는에 표시된대로 오류 코드 및 조건 이름을 나타냅니다PostgreSQL : 문서 : 12 : 부록 A. PostgreSQL 토토 커뮤니티 코드). 존재할 수있는 필드는 다음과 같습니다.세부 사항
, 힌트
, Context
, 스키마
, 테이블
, 열
, DataType
, 제약 조건
, 성명서
, cursor_position
, filename
, Lineno
및funcName
.
PL/토토 핫과 함께 일하는 편리한 방법ErrorCode
정보는 필드 이름이 배열 첨자가되도록 배열에로드하는 것입니다. 그렇게하는 코드는
if [catch spi_exec $ sql_command]
(이중 콜론은 명시 적으로 명시합니다ErrorCode
는 글로벌 변수입니다.)