[답변]pl/sql에서 RAISE_APPLICATION_ERROR안의 숫자값은??? 0 0 2,271

by 장효진 [2005.10.28 17:13:13]


아래 예제를 보시면 이해가 되실겁니다~

오라클의 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

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입