RAISE의 용도? SQL
2012.08.29 17:09
RAISE는 발생시키다 라는 뜻으로 FUNCTION이나 PROCEDURE를 작성할때 사용하는데
이번 프로젝트에서 FUNCTION을 만들면서 알게된 부분을 정리해본다. PL/SQL 에는 EXCEPTION(예외처리) 기능이 있다.
여기서 RAISE는 EXCEPTION을 발생시키는 구문이다. 몇가지 사용방법을 알아보자.PL/SQL 구문중에 내가 의도적으로 EXCEPTION을 발생 시키려고 할때 다음과 같이 작성하면 해당 EXCEPTION으로 이동한다. IF I_GUBUN = 0 THEN
...
ELSIF I_GUBUN = 1 THEN
...
ELSIF I_GUBUN = 2 THEN
...
ELSE
RAISE NO_DATA_FOUND;
END EXCEPTION 구문에서
WHEN THEN 문장으로 몇가지 미리 지정된 EXCEPTION을
사용할수 있는데 OTHERS는 모든 EXCEPTION을 잡을 수 있다. 그렇기 때문에 순서가 중요한데 OTHERS는 EXCEPTION절에 맨 마지막에 와야한다.
순서가 바뀌면 CREATE 시 오류가 난다. FUNCTION 수행중에 ERROR가 발생해도 EXCEPTION이 수행됐다면 ERROR를 발생시키지 않는다.
그렇기 때문에 다음과 같이 RAISE를 명시해주면
EXCEPTION에서 오류를 발생시킬수 있다. 다음 문장을 보자.WHEN NO_DATA_FOUND THEN
V_ERR_MSG := SQLCODE|| ' : ' ||SQLERRM ;
INSERT INTO ERROR(WORK_DATE,ERR_MSG)
VALUES(SYSDATE,V_ERR_MSG);
COMMIT;
RAISE;
RAISE 구문이 없으면 ERROR 테이블의 오류사항만 입력하고 ERROR를 발생시키지 않는다.RAISE 구문을 넣음으로써 외부로 ERROR를 발생킨다. 용도에 따라 RAISE 구문을 적절히 사용해 보자.사용자가 특정한 ERROR를 발생시키고 싶을때는 다음문장을 활용하자. IF I_GUBUN = 0 THEN
...
ELSIF I_GUBUN = 1 THEN
...
ELSIF I_GUBUN = 2 THEN
...
ELSE
RAISE_APPLICATION_ERROR(-20001,'해당 구분이 없습니다.');
END 기존 지정된 오라클 ERROR코드를 제외한 -20,000 ~ -20,999 까지 사용가능하고,
ERROR코드와 문자열을 ERROR로 발생시킬 수 있다.
이번 프로젝트에서 FUNCTION을 만들면서 알게된 부분을 정리해본다. PL/SQL 에는 EXCEPTION(예외처리) 기능이 있다.
여기서 RAISE는 EXCEPTION을 발생시키는 구문이다. 몇가지 사용방법을 알아보자.PL/SQL 구문중에 내가 의도적으로 EXCEPTION을 발생 시키려고 할때 다음과 같이 작성하면 해당 EXCEPTION으로 이동한다. IF I_GUBUN = 0 THEN
...
ELSIF I_GUBUN = 1 THEN
...
ELSIF I_GUBUN = 2 THEN
...
ELSE
RAISE NO_DATA_FOUND;
END EXCEPTION 구문에서
WHEN THEN 문장으로 몇가지 미리 지정된 EXCEPTION을
사용할수 있는데 OTHERS는 모든 EXCEPTION을 잡을 수 있다. 그렇기 때문에 순서가 중요한데 OTHERS는 EXCEPTION절에 맨 마지막에 와야한다.
순서가 바뀌면 CREATE 시 오류가 난다. FUNCTION 수행중에 ERROR가 발생해도 EXCEPTION이 수행됐다면 ERROR를 발생시키지 않는다.
그렇기 때문에 다음과 같이 RAISE를 명시해주면
EXCEPTION에서 오류를 발생시킬수 있다. 다음 문장을 보자.WHEN NO_DATA_FOUND THEN
V_ERR_MSG := SQLCODE|| ' : ' ||SQLERRM ;
INSERT INTO ERROR(WORK_DATE,ERR_MSG)
VALUES(SYSDATE,V_ERR_MSG);
COMMIT;
RAISE;
RAISE 구문이 없으면 ERROR 테이블의 오류사항만 입력하고 ERROR를 발생시키지 않는다.RAISE 구문을 넣음으로써 외부로 ERROR를 발생킨다. 용도에 따라 RAISE 구문을 적절히 사용해 보자.사용자가 특정한 ERROR를 발생시키고 싶을때는 다음문장을 활용하자. IF I_GUBUN = 0 THEN
...
ELSIF I_GUBUN = 1 THEN
...
ELSIF I_GUBUN = 2 THEN
...
ELSE
RAISE_APPLICATION_ERROR(-20001,'해당 구분이 없습니다.');
END 기존 지정된 오라클 ERROR코드를 제외한 -20,000 ~ -20,999 까지 사용가능하고,
ERROR코드와 문자열을 ERROR로 발생시킬 수 있다.
- Tag :
- SQL