■ 오라클 예외처리의 종류 3가지
- 오라클에서 미리 정의한 예외
- 오라클에서 미리 정의하지 않은 예외
- 사용자 정의 예외
- 오라클에서 미리 정의한 예외


Q1. 아래의 상황에서 예외처리를 하시오

답:
set serveroutput on
accept p_ename prompt '이름을 입력하세요 ~'
declare
v_ename emp.ename%type := upper('&p_ename');
v_sal emp.sal%type ;
begin
select sal into v_sal
from emp
where ename = v_ename;
dbms_output.put_line( v_sal );
exception
when no_data_found then
dbms_output.put_line('입력하신 사원은 사원 테이블에 없습니다') ;
when too_many_rows then
dbms_output.put_line('입력하신 사원의 이름이 여러명입니다. 고객 센터로 문의하세요');
end;
/
Q2.. 코드를 실행할때 dept 테이블에 없는 부서번호를 입력하면 해당 부서번호는 우리회사에 없습니다. 라고 메세지가 출력되게 예외처리하시오
답 :
set serveroutput on
accept p_deptno prompt '부서번호를 입력하세요 ~'
declare
v_deptno dept.deptno%type := &p_deptno;
v_loc dept.loc%type;
begin
select loc into v_loc
from dept
where deptno = v_deptno;
dbms_output.put_line('입력하신 부서번호의 부서위치는 ' || v_loc || ' 입니다');
exception
when **no_data_found** then
dbms_output.put_line('입력하신 부서번호는 우리 회사에 없습니다.');
end;
/
■ 오라클 예외처리의 종류 3가지
- 오라클에서 미리 정의한 예외
- 오라클에서 미리 정의하지 않은 예외
- 사용자 정의 예외
오라클에서 미리 정의 하지 않은 예외처리 인 경우는 직접 예외처리를 해야하는데 pragma exception_init 를 이용해서 예외처리 하면 됩니다.
Q1. 다음과 같이 오라클에서 정의되지 않은 예외처리가 발생했을경우 해결하시오

답:
accept p_empno prompt '사원번호를 입력하세요 ~'
accept p_ename prompt '사원이름을 입력하세요 ~'
accept p_sal prompt '월급을 입력하세요 ~'
declare
e_except1 exception;
**pragma exception_init( e_except1 , -02290 );**
begin
insert into emp(empno, ename, sal)
values( &p_empno, '&p_ename', &p_sal);
commit;
exception
when dup_val_on_index then
dbms_output.put_line('기존에 있는 사원번호로 입력하셨습니다');
when e_except1 then
dbms_output.put_line('회사 규정상 월급을 9000 보다 크게 입력하실 수 없어요');
end;
/
■ 오라클 예외처리의 종류 3가지
- 오라클에서 미리 정의한 예외
- 오라클에서 미리 정의하지 않은 예외
- 사용자 정의 예외
오라클 에러가 발생하는 것은 아닌데 이 부분은 예외로 하고 싶을때
이때, 직접 예외를 정의하여 사용하는 예외를 사용자 정의 예외 라고 합니다
Q1.사용자 정의 예외처리로 구현해서 월급이 3000 이상인 사원들을 조회하려 하면 해당 사원의 월급은 회사 규정상 볼 수 없습니다. 라는 메세지가 출력되게하시오
set serveroutput on
accept p_ename prompt '사원이름을 입력하세요 ~ '
declare
v_ename emp.ename%type := upper('&p_ename');
v_sal emp.sal%type;
**e_invalid** exception;
begin
select sal into v_sal
from emp
where ename = v_ename;
if v_sal >= 3000 then
**raise** **e_invalid**;
end if;
dbms_output.put_line( v_sal );
exception
when e_invalid then
dbms_output.put_line('해당 사원의 월급은 회사 규정상 보실 수 없습니다.');
end;
/
'Oracle > Oracle 설치' 카테고리의 다른 글
| 6. MobaXterm 설치하고 Oracle Linux 연결하기 (0) | 2026.03.18 |
|---|---|
| 5. Oracle Linux 설치 (0) | 2026.03.18 |
| 4. Oracle 12c 다운로드 (0) | 2026.03.16 |
| 2. Oracle SQL Developer 설치하고 데이터베이스 접속하기 / ORA-12541 해결하기 (0) | 2026.01.05 |
| 1. 오라클 21c 설치방법 (0) | 2026.01.05 |