[ORACLE] Stored Procedure Exception
Posted 2008/04/15 14:431. TOO_MANY_ROWS Exception
// SELECT결과가 Multy Rows인데 Cursor를 사용하지 않았을 경우
DECLARE
v_emp emp%ROWTYPE;BEGIN
SELECT empno, ename, deptno
INTO v_emp.empno, v_emp.ename, v_emp.deptno
FROM emp
WHERE deptno = 20;DBMS_OUTPUT.PUT_LINE('사번 : '||v_emp.empno);
DBMS_OUTPUT.PUT_LINE('이름 : '||v_emp.ename);
DBMS_OUTPUT.PUT_LINE('부서번호 : '||v_emp.deptno);EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('DUP_VAL_ON_INDEX 에러 발생');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS 에러 발생');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND 에러 발생');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('기타 에러 발생');END;
/
명령문이 처리되었습니다.
0.01 초
2. PK를 Insert하지 않아서 발생하는 NOT NULL Exception
DECLARE
not_null_test EXCEPTION;
PRAGMA EXCEPTION_INIT(not_null_test, -1400);BEGIN
INSERT INTO emp(ename, deptno)
VALUES('tiger', 30);EXCEPTION
WHEN not_null_test THEN
DBMS_OUTPUT.PUT_LINE('not null 에러 발생');END;
/
1개의 행이 삽입되었습니다.
0.08 초
3. RAISE문을 사용하여 직접적으로 예외 발생
DECLARE
--예외의 이름을 선언
user_define_error EXCEPTION;
cnt NUMBER;BEGIN
SELECT COUNT(empno)
INTO cnt
FROM emp
WHERE deptno=40;IF cnt<5 THEN
RAISE user_define_error;
END IF;EXCEPTION
-- 예외가 발생할 경우 해당 예외를 참조한다.
WHEN user_define_error THEN
RAISE_APPLICATION_ERROR(-20001, '사원 부족');END;
/
0.06 초
4. WHEN others THEN
// 예외의 종류와 상관없이
DECLARE
v_emp emp%ROWTYPE;BEGIN
SELECT *
INTO v_emp
FROM emp;DBMS_OUTPUT.PUT_LINE('사번 : '||v_emp.empno);
DBMS_OUTPUT.PUT_LINE('이름 : '||v_emp.ename);EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERR_CODE : ' || TO_CHAR(SQLCODE));
DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);END;
/
ERR MESSAGE : ORA-01422: 실제 인출은 요구된 것보다 많은 수의 행을 추출합니다
명령문이 처리되었습니다.
0.03 초
'C.S.E > Database' 카테고리의 다른 글
| [ORACLE] Trigger (0) | 2008/04/15 |
|---|---|
| [ORACLE] Procedure (0) | 2008/04/15 |
| [ORACLE] Stored Procedure Exception (0) | 2008/04/15 |
| [ORACLE] Stored Procedure Programming (0) | 2008/04/15 |
| [ORACLE] Stored Procedure (0) | 2008/04/15 |
| [ORACLE] Stored Procedure를 사용한 Insert / Select 시간측정 (0) | 2008/04/14 |
- Filed under : C.S.E/Database
- Tag : exception, Oracle, Stored Procedure
- Comment Trackback
이올린에 북마크하기