아래 예제를 보시면 이해가 되실겁니다~
오라클의 1403(NOT FOUND)이나 0(정상)처럼 특정 정해진 에러상수가 아니라~
사용자정의 에러메시지라고 생각하시면 될 것 같네요~
raise_application_error(error_number, error_message, [keep-errors]);
error_number : -20,000 ~ -20,999
error_messate : 512자 이하
KEEP_ERROR : TRUE -> 에러 리스트 추가
FALSE -> 새 에러가 에러의 현재 리스트를 대신함
create or replace procedure regitser (
p_studentid in students.id%type,
p_departmen tin classes.department%tye,
p_course in classes.course%type ) as
v_currentstudents number;
v_masxstudents number;
begin
select current_students, max-students
into v_currentstudetns,k v_maxstudents
from classes
where course = p_course
adn department = p_department;
if v_currentsutdetns + 1 > v_maxstudents then
rasie_application_error(-20000 , 'can''t add more students to ' ||
p_department || '' || p_course);
end if;
classpackage.addstudnet(p_studentid, p_department, p_course);
exception
when no_data_found then
raise_applicatiojn_error(-20001,p_department || '' ||
p_course || 'doesn''t exitst ~');
end register;
----------------------------------------
이 유틸의 유용성
--> 에러의 사용자 정의없이 바로 에러를 자유스럽게 사용이 가능하다.
--> 이경우 프로그래머는 에러가 발생하는 상황에 대해서 확실히 알고 있어야한다.
-->
RAISE NO_DATA_FOUND
RAISE