오라클 사용자 예외처리 사용 방법
PL-SQL 작성시 오라클 저장함수 RAISE_APPLICATION_ERROR를 사용하여 사용자 정의 예외를 다룰 수 있다. 우리히가 흔히 보는 'ORA-XXXXX'이런 코드를 작성해서 메시지와 함께 발생시킬 수 있다. 숫자 범위는 -20000부터 -20999의 범위 내에서 가능하다.
CREATE OR REPLACE FUNCTION FN_GET_MACHINE_NO(
l_cd IN VARCHAR2
,m_cd IN VARCHAR2
,s_cd IN VARCHAR2
) RETURN VARCHAR IS retval VARCHAR2(14);
seqNextVal VARCHAR(7);
lCdVal VARCHAR(1);
mCdVal VARCHAR(2);
sCdVal VARCHAR(3);
INPUT_ERR EXCEPTION;
OUTPUT_ERR EXCEPTION;
BEGIN
seqNextVal := 0;
lCdVal := TRIM(l_cd);
mCdVal := TRIM(m_cd);
sCdVal := TRIM(s_cd);
BEGIN
-- 20100823 LCS 수정 : 소분류가 NULL이면 '99'기본값 설정.
IF(sCdVal IS NULL) THEN
sCdVal := '99';
END IF;
IF( lCdVal IS NULL OR mCdVal IS NULL ) THEN
RAISE INPUT_ERR;
ELSE
SELECT SUBSTR( LPAD(DQ_DQMACHN_INDEX.NEXTVAL , 12, '0') , 6, 7)
INTO seqNextVal
FROM DUAL ;
retval := lCdVal || mCdVal || sCdVal || TO_CHAR(SYSDATE, 'YY') || seqNextVal ;
END IF;
IF LENGTH(retval) <> 14 THEN
RAISE OUTPUT_ERR;
END IF;
EXCEPTION
WHEN INPUT_ERR THEN
IF( lCdVal IS NULL ) THEN
-- 대분류코드값이 없을 때 Exception 발생
RAISE_APPLICATION_ERROR(-20998,'전달된 파라미터(분류코드)에 문제가 있습니다(대분류 코드값이 없습니다.)');
ELSIF( lCdVal IS NULL OR mCdVal IS NULL ) THEN
-- 중분류코드값이 없을 때 Exception 발생
RAISE_APPLICATION_ERROR(-20998,'전달된 파라미터(분류코드)에 문제가 있습니다(중분류 코드값이 없습니다.)');
END IF;
WHEN OUTPUT_ERR THEN
--DBMS_OUTPUT.PUT_LINE('생성된 기기관리번호('||retval||')는 14자리가 아닙니다.');
RAISE_APPLICATION_ERROR(-20999,'생성된 기기관리번호('||retval||')는 14자리가 아닙니다.');
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
NULL;
END;
RETURN retval;
END FN_GET_MACHINE_NO;
위 예제에서 처럼 최상단에 exception을 선언하고 중간에 RAISE를 사용해서 특정 조건에 만족하면 Exception을 발생시키고 하단에 RAISE_APPLLICATION_ERROR(...) 함수를 사용해서 구체적인 에러코드와 메시지를 구성해서 발생시키면 된다.
이렇게 사용하게되면 Application단에서 exception 다루는 방법 그대로 잡아낼 수 있다. ORA-20999 Exception이 발생하게 된다.
'Programming > Database' 카테고리의 다른 글
| ORA-01009:필수 매개변수가 없습니다. (2) | 2010/10/11 |
|---|---|
| 오라클 사용자 예외처리 사용 방법 (0) | 2010/08/23 |
| Oracle 유용 구분 정리 해석내용 - PARTITION BY, START WITH...CONNECT BY PRIOR (1) | 2010/05/28 |
| Oracle 유용 구분 정리 - PARTITION BY, START WITH...CONNECT BY PRIOR (0) | 2010/04/22 |
This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from.
CSS