젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.6 : PL/토토 결과의 이벤트 트리거 절차 | PostgreSQL : 문서 : 9.6 : PL/사설 토토 -사설 토토 절차 언어 | CHAPTER 42. PL/범퍼카 토토 -범퍼카 토토 절차 언어 | PostgreSQL : 문서 : 9.6 : 사설 토토 사이트과 알 수없는 명령 |
pl/범퍼카 토토 함수에서 또는 호출 된 범퍼카 토토 코드는 유효하지 않은 작업을 실행하거나 범퍼카 토토을 사용하여 오류를 생성하여 오류를 일으킬 수 있습니다.오류
명령 또는 pl/범퍼카 토토 'selog
명령. 이러한 오류는 TCL을 사용하여 TCL 내에서 잡힐 수 있습니다.캐치
명령. 잡히지 않았지만 PL/TCL 기능의 최상위 수준으로 전파 할 수 있다면 데이터베이스 오류로 변합니다.
반대로 PL/TCL 내에서 발생하는 데이터베이스 오류SPI_EXEC
, SPI_PREPARE
및SPI_EXECP
명령은 TCL 오류로보고되므로 TCL에 의해 잡을 수 있습니다캐치
명령. 다시 말하지만, 잡히지 않고 최상위로 전파되면 데이터베이스 오류로 돌아갑니다.
범퍼카 토토 제공ErrorCodeTCL 프로그램이 쉽게 해석하기 쉬운 양식의 오류에 대한 추가 정보를 나타낼 수있는 변수. 내용은 TCL 목록 형식이며 첫 번째 단어는 오류를보고하는 서브 시스템 또는 라이브러리를 식별합니다. 그 외에도 내용은 개별 서브 시스템 또는 라이브러리에 맡겨집니다. PL/TCL 명령에 의해보고 된 데이터베이스 오류의 경우 첫 번째 단어는입니다.Postgres, 두 번째 단어는 Postgres 버전 번호이며 추가 단어는 오류에 대한 자세한 정보를 제공하는 필드 이름/값 쌍입니다. 전지sqlstate, 조건및메시지항상 제공됩니다 (처음 두 개는 오류 코드 및 조건 이름을 나타냅니다.PostgreSQL : 문서 : 9.6 : PostgreSQL 롤 토토 코드). 존재할 수있는 필드는 다음과 같습니다.세부 사항, 힌트, 컨텍스트, 스키마, 테이블, 열, DataType, 제약 조건, Statement, cursor_position, filename, Lineno및funcName.
pl/범퍼카 토토과 함께 일하는 편리한 방법ErrorCode정보는 필드 이름이 배열 첨자가되도록 배열에로드하는 것입니다. 그렇게하는 코드는
if [catch spi_exec $ sql_command] if [lindex $ :: ErrorCode 0] == "postgres" 배열 세트 ERRERARRAY $ :: ERRORCODE if $ errorArray (조건) == "undefined_table" # 누락 된 테이블을 처리하십시오 또 다른 # 다른 유형의 SQL 오류를 처리하십시오
(이중 콜론은 명시 적으로 명시 적으로ErrorCode글로벌 변수입니다.)