지난번에 질문했던걸 좀 더 수정해서 커서문을 사용했는데요
CREATE OR REPLACE PROCEDURE in_emp
(new_empno in emp.empno%type,
new_ename in emp.ename%type,
new_deptno in emp.deptno%type)
IS
v_empno emp.empno%type;
v_ename emp.ename%type;
v_deptno emp.deptno%type;
cursor emp_cursor is
select e.empno, e.ename, d.deptno
from emp e, dept d
where e.deptno = d.deptno;
begin
open emp_cursor;
fetch emp_cursor into v_empno,v_ename, v_deptno;
if new_empno = v_empno then
dbms_output.put_line('새로운 번호 입력');
elsif new_deptno = v_deptno then
dbms_output.put_line('있는 번호로 입력');
else insert into emp(empno, ename, deptno)
values (new_empno, new_ename, new_deptno);
end if;
close emp_cursor;
end;
/
프로시저도 제대로 생성되고
제대로 된 값을 입력하면 emp테이블에 값도 잘 입력됩니다.
SQL> exec in_emp(7934, 'BLACK', 50);
BEGIN in_emp(7934, 'BLACK', 50); END;
*
ERROR at line 1:
ORA-00001: unique constraint (S214210031.PK_EMP) violated
ORA-06512: at "S214210031.IN_EMP", line 25
ORA-06512: at line 1
잘못된 값을 입력하면 '새로운 번호 입력' || '있는 번호로 입력'이 메시지로 나와야 되는데
친구들과 고민해봤는데 커서문을 하나 더 사용해야된다, if문에서 잘못되었다는 등
메시지를 출력하려면 어떤 방법을 사용해야 할까요