CREATE OR REPLACE procedure prac1( v_empno in sale.empno%type, v_salecount in sale.salecount%type) IS EX_TEST EXCEPTION; EX_TEST2 EXCEPTION; EX_TEST3 EXCEPTION; begin IF v_empno not between '1' and '5' then RAISE EX_TEST; ELSIF ?????????????? then RAISE EX_TEST2; ELSIF v_salecount not between '0' and '100' then RAISE EX_TEST3; ELSE insert into sale values (v_empno,to_char(sysdate,'yyyy-mm-dd'),v_salecount); update totsale set totalsalecount = totalsalecount+v_salecount where empno = v_empno; dbms_output.put_line('정상처리 되었습니다.'); END IF; exception WHEN EX_TEST THEN dbms_output.put_line('없는 사원번호입니다.'); WHEN EX_TEST2 THEN dbms_output.put_line('퇴사한 사원번호입니다.'); WHEN EX_TEST3 THEN dbms_output.put_line('판매 대수에 에러가 있습니다.'); WHEN OTHERS THEN dbms_output.put_line('기타에러 : ' || SQLERRM); end prac1;
begin에서 if문 사용시
if 조건 then 반환
이렇게 쓰잖아요 근데 제가 구현해야할게 퇴사여부(근무,퇴사)를 판별해서
exception으로 넘겨야하는 상황인데 조건에 어떻게 써야 테이블안에있는 문자열인 근무,퇴사를 판별해서
exception으로 넘길 수 있을까요?
v_firekind in saleman.firekind%type을 쓰면 쉽게 할 수 있는데
그러면 execute할때 문자를 적어야해서 이 방법은 못 씁니다... 도와주세요
CREATE OR REPLACE PROCEDURE prac1 ( v_empno IN sale.empno%TYPE , v_salecount IN sale.salecount%TYPE ) IS ex_test EXCEPTION; v_err VARCHAR2(100); v_status emp.status%TYPE; BEGIN BEGIN SELECT status INTO v_status FROM emp WHERE empno = v_empno ; EXCEPTION WHEN NO_DATA_FOUND THEN v_err := '없는 사원번호입니다.'; RAISE ex_test; WHEN OTHERS THEN v_err := '사원 조회 에러 : (' || SQLCODE ||')'|| SQLERRM; RAISE ex_test; END; IF v_status = '퇴사' THEN v_err := '퇴사한 사원번호입니다.'; RAISE ex_test; END IF; IF v_salecount IS NULL OR v_salecount NOT BETWEEN 1 AND 100 THEN v_err := '판매 대수에 에러가 있습니다.'; RAISE ex_test; END IF; BEGIN INSERT INTO sale VALUES (v_empno, TO_CHAR(sysdate, 'yyyy-mm-dd'), v_salecount) ; UPDATE totsale SET totalsalecount = totalsalecount + v_salecount WHERE empno = v_empno ; EXCEPTION WHEN OTHERS THEN v_err := '판매 처리 에러 : (' || SQLCODE ||')'|| SQLERRM; RAISE ex_test; END; dbms_output.put_line('정상처리 되었습니다.'); EXCEPTION WHEN ex_test THEN dbms_output.put_line(v_err); WHEN OTHERS THEN dbms_output.put_line('기타 에러 : (' || SQLCODE ||')'|| SQLERRM; END prac1; /