이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 41.9. 사설 토토 사이트 및 메시지버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

39.8. 롤 토토 및 메시지

다음을 사용하세요올림보고할 성명 메시지가 표시되고 롤 토토가 발생합니다.

상승 [ 레벨 ] '형식' [, 표현 [, ... ]] [사용 중옵션 = 표현 [, ... ] ];
인상 [ 레벨 ] 조건_이름 [사용 중옵션 = 표현 [, ... ] ];
인상 [ 레벨 ] SQLSTATE 'sqlstate' [사용 중옵션 = 표현 [, ... ] ];
인상 [ 레벨 ] 사용 중옵션 = 표현 [, ... ];
인상 ;

레벨옵션은 다음을 지정합니다. 오류 심각도. 허용되는 수준은 다음과 같습니다.디버그, 로그, 정보, 공지, 경고예외, 와 함께예외기본값입니다.예외오류가 발생합니다(이것은 일반적으로 현재 트랜잭션을 중단합니다.) 다른 레벨만 다양한 우선순위 수준의 메시지를 생성합니다. 메시지 여부 특정 우선순위의 내용이 클라이언트에 보고되고 다음 주소로 작성됩니다. 서버 로그 또는 둘 다에 의해 제어됩니다.log_min_messages그리고client_min_messages구성 변수. 참조18장더 많은 정보를 원하시면.

이후레벨만약 있다면, 당신은 할 수 있습니다 를 쓰세요형식(반드시 표현식이 아닌 단순 문자열 리터럴). 형식 문자열 보고할 오류 메시지 텍스트를 지정합니다. 형식 문자열 뒤에는 선택적 인수 표현식이 올 수 있습니다. 메시지에 삽입되었습니다. 형식 문자열 내부에서,%은 다음의 문자열 표현으로 대체됩니다. 다음 선택적 인수의 값입니다. 쓰기%%리터럴을 내보내다%.

이 예에서 값은v_job_id다음을 대체합니다%문자열에서:

알림 'cs_create_job(%) 호출 중', v_job_id;

다음 방법으로 오류 보고서에 추가 정보를 첨부할 수 있습니다. 쓰기사용 중다음이 따름옵션 = 표현항목. 허용되는옵션키워드는메시지, 세부사항, 힌트ERRCODE, 각각표현모든 문자열 값일 수 있습니다. 표현.메시지오류를 설정합니다 메시지 텍스트(이 옵션은 다음 형식으로 사용할 수 없습니다.상승이전에 형식 문자열을 포함함사용 중). 세부정보오류 세부정보 메시지를 제공하는 반면힌트힌트 메시지를 제공합니다.ERRCODE오류 코드(SQLSTATE)를 지정합니다. 다음과 같이 조건 이름별로 보고서를 작성합니다.부록 A또는 직접적으로 5자리 SQLSTATE 코드입니다.

이 예는 주어진 오류로 인해 거래를 중단합니다 메시지 및 힌트:

예외 발생 '존재하지 않는 ID -- %', user_id
      힌트 사용 = '사용자 ID를 확인하세요';

이 두 가지 예는 SQL상태:

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;

또 다른 변형은 작성하는 것입니다.상승 사용또는상승레벨사용 중다른 모든 것을 넣습니다 안으로사용 중목록.

의 마지막 변종상승없음 매개변수를 전혀 사용하지 마세요. 이 양식은 내부에서만 사용할 수 있습니다.시작블록의예외절; 현재 처리 중인 오류가 발생합니다. 다시 던졌습니다.

참고:이전PostgreSQL 9.1, 상승매개변수가 없으면 다음과 같이 해석됩니다. 활성 블록이 포함된 블록에서 오류를 다시 발생시킵니다. 예외 처리기. 따라서예외해당 핸들러 내에 중첩된 절은 이를 포착할 수 없습니다.상승중첩된 내부에 있음예외절의 블록입니다. 이것은 놀랍고 Oracle과 호환되지 않는 것으로 간주됩니다. PL/SQL.

조건 이름이나 SQLSTATE가 a에 지정되지 않은 경우예외 발생명령, 기본값은 다음을 사용하는 것입니다.RAISE_EXCEPTION (P0001). 메시지 텍스트가 지정되지 않은 경우 기본값은 조건 이름이나 SQLSTATE를 메시지로 사용하는 것입니다. 텍스트.

참고:SQLSTATE로 오류 코드를 지정할 때 코드의 경우 미리 정의된 오류 코드에만 국한되지는 않지만 5자리 숫자로 구성된 오류 코드를 선택할 수 있습니다. 이외의 대문자 ASCII 문자00000. 피하시는 것이 좋습니다 세 개의 0으로 끝나는 오류 코드를 던지는 이유는 다음과 같습니다. 카테고리 코드이며 다음을 트랩해야만 트랩할 수 있습니다. 전체 카테고리.