Search Results for 'exception'

1 POSTS

  1. 2008/04/15 [ORACLE] Stored Procedure Exception

[ORACLE] Stored Procedure Exception

Posted 2008/04/15 14:43

1. 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;
/

TOO_MANY_ROWS 에러 발생

명령문이 처리되었습니다.

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;
/

not null 에러 발생

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;
/

ORA-20001: 사원 부족

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_CODE : -1422
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