Self-Check
1. 다음과 같이 부서 테이블의 복사본을 만들어 본다. 부서번호, 부서명, 작업 flag(I: insert, U:update, D:delete)을 매개변수로 받아 ch10_departments 테이블에 각각 INSERT, UPDATE, DELETE 하는ch10_iud_dep_proc 란 이름의 프로시저를 만들어 보자.
입력
CREATE TABLE ch10_departments
AS
SELECT department_id, department_name
FROM departments;
ALTER TABLE ch10_departments ADD CONSTRAINTS pk_ch10_departments PRIMARY KEY (department_id);
2. 다음과 같이 프로시저를 실행해 보고 결과가 어떻게 나왔는지 그 이유를 설명하라.
입력
EXEC ch10_iud_dep_proc (10, '총무기획부', 'I');
3. ch10_iud_dep_proc에서 시스템 예외 처리 로직을 추가해 보자. 예외가 발생하면 ROLLBACK을 하라. 그리고 2번 문제처럼 프로시저를 실행하여 결과를 확인해 보자.
4. ch10_iud_dep_proc에서 부서를 삭제할 때, 사원 테이블을 검색해 해당 부서에 할당된 사원이 있으면, 삭제할 수 없다는 메시지와 함께 이를 사용자 정의 예외로 구현해 보자.
5. 4번에서 작성한 로직을 동일한 사용자 정의 예외로 처리하는데, 이번에는 사용자 정의 예외를 예외코드 -20000 번으로 매핑해서 처리해 보자.
6. 5번 문제와 동일한 로직을 구현하는데, 이번에는 RAISE_APPLICATION_ERROR를 사용해서 구현해 보자.