2016년 7월 28일 목요일
[IT실무고급교육★탑크리에듀]오라클 예외처리와 SQLCODE, SQLERRM 함수
오라클 예외처리와 SQLCODE, SQLERRM 함수
SQLCODE : 오라클 서버 에러코드를 정수로 리턴한다.
SQLERRM : 오라클 서버 에러메시지를 리턴한다.
발생하는 예외에 대해 보편적으로 EXCEPTION절에서 하나씩 예외를 받아서 처리해도 되지만 WHEN OTHRES THEN 절만 기술하고 아래처럼 사용할 수도 있다.
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001, SQLCODE || ' => ' || SQLERRM);
END;
만약 에러로그 테이블을 운영한다면 다음처럼 기술하면 된다.
EXCEPTION
WHEN OTHERS THEN
errcode := SQLCODE;
errmsg := SQLERRM;
INSERT INTO errlog VALUES (errcode, errmsg);
END;
SQL> create or replace procedure deldept2
2 (p_deptno in dept.deptno%type)
3 as
4 begin
5 delete from dept
6 where deptno=p_deptno;
7
8 commit;
9 exception
10 when others then
11 rollback;
12 raise_application_error(-20001,
13 '에러발생! 에러코드 => '||SQLCODE|| ' 에러메시지 => ' ||SQLERRM);
14 end;
15 /
프로시저가 생성되었습니다.
SQL> exec deldept2(10)
BEGIN deldept2(10); END;
*
1행에 오류:
ORA-20001: 에러발생! 에러코드 => -2292 에러메시지 => ORA-02292: 무결성
제약조건(SCOTT.FK_DEPTNO)이 위배되었습니다- 자식 레코드가 발견되었습니다
ORA-06512: "SCOTT.DELDEPT2", 12행
ORA-06512: 1행
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기