다음을 사용하세요상승메시지를 보고하고 사설 토토를 발생시키는 명령문.
상승 [레벨] '형식' [,표현[, ... ]] [사용 중옵션=표현[, ... ] ]; 인상 [레벨]조건_이름[사용 중옵션=표현[, ... ] ]; 인상 [레벨] SQLSTATE 'sqlstate' [사용 중옵션=표현[, ... ] ]; 인상 [레벨] 사용 중옵션=표현[, ... ]; 인상 ;
그레벨옵션은 오류 심각도를 지정합니다. 허용되는 수준은 다음과 같습니다.디버그, 로그, 정보, 공지, 경고및예외, 와예외기본값입니다.예외오류가 발생합니다(일반적으로 현재 트랜잭션이 중단됨). 다른 수준은 서로 다른 우선순위 수준의 메시지만 생성합니다. 특정 우선순위의 메시지가 클라이언트에 보고되는지, 서버 로그에 기록되는지 또는 둘 다에 의해 제어되는지 여부는log_min_messages그리고client_min_messages구성 변수. 참조사설 토토 사이트 : 문서 : 13 : 19 장. 서버 구성더 많은 정보를 원하시면.
이후레벨있는 경우 다음을 지정할 수 있습니다.형식string(표현식이 아니라 단순 문자열 리터럴이어야 함). 형식 문자열은 보고할 오류 메시지 텍스트를 지정합니다. 형식 문자열 뒤에는 메시지에 삽입할 선택적 인수 표현식이 올 수 있습니다. 형식 문자열 내부에서,%은 다음 선택적 인수 값의 문자열 표현으로 대체됩니다. 쓰기%%리터럴을 내보내다%. 인수 개수는 다음 개수와 일치해야 합니다.%형식 문자열에 자리 표시자가 있거나 함수를 컴파일하는 동안 오류가 발생합니다.
이 예에서 값은v_job_id다음을 대체합니다%문자열에서:
'cs_create_job(%) 호출 중', v_job_id;
다음을 작성하여 오류 보고서에 추가 정보를 첨부할 수 있습니다.사용 중다음이 따름옵션 = 표현항목. 각각표현모든 문자열 값 표현식이 될 수 있습니다. 허용되는옵션핵심 단어는 다음과 같습니다:
메시지오류 메시지 텍스트를 설정합니다. 이 옵션은 형식으로 사용할 수 없습니다.상승이전에 형식 문자열을 포함함사용 중.
세부정보오류 상세 메시지를 제공합니다.
힌트힌트 메시지를 제공합니다.
ERRCODE다음과 같이 조건 이름으로 보고할 오류 코드(SQLSTATE)를 지정합니다.PostgreSQL : 문서 : 13 : 부록 A. PostgreSQL 스포츠 토토 베트맨 코드또는 5자리 SQLSTATE 코드로 직접.
열제약데이터 유형표스키마관련 개체의 이름을 제공합니다.
이 예는 주어진 오류 메시지와 힌트로 트랜잭션을 중단합니다:
예외 발생 '존재하지 않는 ID -- %', user_id
힌트 사용 = '사용자 ID를 확인하세요';
이 두 가지 예는 SQLSTATE를 설정하는 동일한 방법을 보여줍니다:
RAISE '중복된 사용자 ID: %', user_id USING ERRCODE = 'unique_violation'; RAISE '중복된 사용자 ID: %', user_id USING ERRCODE = '23505';
두 번째가 있습니다상승주 인수가 보고할 조건 이름 또는 SQLSTATE인 구문입니다. 예를 들면 다음과 같습니다.
RAISE Division_by_zero; RAISE SQLSTATE '22012';
이 구문에서는,사용 중사용자 정의 오류 메시지, 세부정보 또는 힌트를 제공하는 데 사용할 수 있습니다. 이전 예를 수행하는 또 다른 방법은 다음과 같습니다.
RAISE Unique_violation USING MESSAGE = '중복된 사용자 ID: ' || user_id;
또 다른 변형은 다음과 같습니다.사용하여 인상또는상승그리고 그 밖의 모든 것은레벨사용 중사용 중목록.
의 마지막 변종상승매개변수가 전혀 없습니다. 이 양식은 내부에서만 사용할 수 있습니다.시작블록의예외절; 현재 처리 중인 오류가 다시 발생하게 됩니다.
이전포스트그레SQL 9.1, 상승18937_19064예외해당 핸들러 내에 중첩된 절은 이를 포착할 수 없습니다.상승중첩된 내부에 있었습니다예외절의 블록입니다. 이는 놀라운 일이었으며 Oracle의 PL/SQL과 호환되지 않는 것으로 간주되었습니다.
조건 이름이나 SQLSTATE가 a에 지정되지 않은 경우예외 발생명령, 기본값은 다음을 사용하는 것입니다.raise_Exception (P0001). 메시지 텍스트가 지정되지 않은 경우 기본값은 조건 이름 또는 SQLSTATE를 메시지 텍스트로 사용하는 것입니다.
SQLSTATE 코드로 오류 코드를 지정할 때 미리 정의된 오류 코드에 국한되지 않고 5자리 및/또는 대문자 ASCII 문자로 구성된 오류 코드를 선택할 수 있습니다.00000. 0 세 개로 끝나는 사설 토토 코드는 발생하지 않는 것이 좋습니다. 이는 카테고리 코드이고 전체 카테고리를 트랩해야만 트랩할 수 있기 때문입니다.
그어설션문은 디버깅 검사를 삽입하기 위한 편리한 약칭입니다.PL/pgSQL함수.
어설션조건[ ,메시지];
그조건은 항상 true로 평가될 것으로 예상되는 부울 표현식입니다. 만약 그렇다면,어설션문은 더 이상 아무것도 하지 않습니다. 결과가 false 또는 null인 경우, 다음은ASSERT_FAILURE예외가 발생했습니다. (평가 중 오류가 발생한 경우조건, 정상적인 사설 토토로 보고됩니다.)
선택사항인 경우메시지제공되며 결과(null이 아닌 경우)가 기본 오류 메시지 텍스트를 대체하는 표현식입니다.“어설션 실패”, 그래야만조건실패.메시지어설션이 성공하는 일반적인 경우에는 표현식이 평가되지 않습니다.
어설션 테스트는 구성 매개변수를 통해 활성화 또는 비활성화될 수 있습니다.plpgsql.check_asserts, 부울 값을 취합니다. 기본값은켜짐. 이 매개변수가 다음과 같은 경우꺼짐그런 다음어설션문은 아무것도 하지 않습니다.
참고어설션은 일반적인 오류 조건을 보고하는 것이 아니라 프로그램 버그를 감지하기 위한 것입니다. 다음을 사용하세요.상승위에 설명된 진술입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.