<샘플코드에서 사용한 데이터는 HR 스키마이고, 오라클 설치시 생성할 수 있는 기본 스키마 입니다>
declare
v_employee_id number:=1;
begin
update employees
set salary=20000
where employee_id=v_employee_id;
dbms_output.put_line(sql%rowcount);
end;
--------------------------------------
# 조건에 맞는 데이터가 없으므로 업데이트 되는 데이터는 없다.
# 그래서 적용된 row 개수는 0 이다.
0
# 에러는 아니지만 조건에 맞는 데이터가 없는 경우 에러를 발생시키는 샘플
declare
v_employee_id number:=1;
e_invalid_no exception;
begin
update employees
set salary=20000
where employee_id=v_employee_id;
dbms_output.put_line(sqlcode); >>> 0
dbms_output.put_line(sqlerrm); >>> "ORA-0000: normal, successful completion"
if sql%notfound then
raise e_invalid_no;
end if;
commit; >>> 조건에 맞는 데이터가 없으면 예외처리로 넘어가서 실행되지 않는다.
exception
when e_invalid_no then
dbms_output.put_line('invalid emp ID');
dbms_output.put_line(sqlcode);
dbms_output.put_line(sqlerrm);
end;
------------------------
0
ORA-0000: normal, successful completion
invalid emp ID
1
User-Defined Exception
# 사용자 예외처리를 발생시키는 다른 방법.
declare
v_employee_id number:=1;
---e_invalid_no exception;
begin
update employees
set salary=20000
where employee_id=v_employee_id;
if sql%notfound then
---raise e_invalid_no;
raise_application_error(-20000, 'invalid emp ID');
end if;
commit;
end;
------------------------------------------------------------------
Error report -
ORA-20000: invalid emp ID
ORA-06512: at line 12
20000. 00000 - "%s"
*Cause: The stored procedure 'raise_application_error'
was called which causes this error to be generated.
*Action: Correct the problem as described in the error message or contact
the application administrator or DBA for more information.
'Database > PLSQL' 카테고리의 다른 글
031 - [Oracle PL/SQL] Procedure (0) | 2024.02.22 |
---|---|
030 - [Oracle PL/SQL] Exceptions - Group Functions and Blocks (0) | 2024.02.21 |
028 - [Oracle PL/SQL] Exceptions - Non predefined error (0) | 2024.02.21 |
027 - [Oracle PL/SQL] Exceptions - common mistakes (0) | 2024.02.21 |
026 - [Oracle PL/SQL] Exceptions (0) | 2024.02.20 |