2
그래서 여기
동안 코드는 다음과 같습니다PL/SQL 프로 시저, 인상 NO_DATA_FOUND 내 오라클 클래스에서 나에게 주어진 삽입
CREATE OR REPLACE PROCEDURE add_job_hist
(p_emp_id IN employees.employee_id%TYPE,
p_new_jobid IN jobs.job_id%TYPE) IS
BEGIN
INSERT INTO job_history
SELECT employee_id, hire_date, SYSDATE, job_id, department_id
FROM employees
WHERE employee_id = p_emp_id;
UPDATE employees
SET hire_date = SYSDATE,
job_id = p_new_jobid,
salary = (SELECT min_salary + 500
FROM jobs
WHERE job_id = p_new_jobid)
WHERE employee_id = p_emp_id;
DBMS_OUTPUT.PUT_LINE('Added employee ' || p_emp_id || '
details to the JOB_HISTORY table');
DBMS_OUTPUT.PUT_LINE('Updated current job of employee ' ||
p_emp_id|| 'to ' || p_new_jobid);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR (-20001, 'Employee does not exist!');
END add_job_hist;
/
문제는이 성명 "INTO SELECT"아니라고, 그래서 언제 NO_DATA_FOUND 예외가 처리되지 않습니다. 내 자신의 사용자 정의 예외를 발생시킬 수 있지만 프로 시저에서이 작업을 수행하지 않는 것 같습니다. 이 문제를 해결하여 예외를 처리 할 수 있습니까? 왜냐하면 지금 존재하지 않는 p_emp_id를 주면 어쨌든 그것을 처리하기 때문에 명령은 추가 프로 시저 변수를 원하지 않습니다.
감사합니다.
완벽합니다. 고맙습니다! (upvoted 및 답변으로 선택). 고맙습니다! -잭 – Munchy