프로시저 내부에서 프로시저 호출시..에러체크 관련해서 질문있습니다. 0 2 1,715

by 최성호 [2012.09.21 10:24:14]



SP1 이있고 SP2 가 있다고 가정하였을 경우

SP1
===========================================================>

CREATE OR REPLACE SP1(
IN 파라미터1
, IN 파라미터2
)
IS

SP2 호출;

EXCEPTION
ROLLBACK;
RETURN;
체크1
END SP1;


===========================================================


SP2
===========================================================>
CREATE OR REPLACE SP2(
IN 파라미터1
, IN 파라미터2

)
IS
BEGIN
SP2 내용


EXCEPTION
RETURN;
SP2체크

END SP2;

===========================================================


대충 이렇게 짜놨는데

내부호출 SP2 프로시저에서 익셉션이 발생할경우에
SP1 에서 체크하고 작업을 중단할수 있을까요?

만약 그렇지 않다면

SP2 호출 부분을 아래와 같이 바꿔야 하나요?

BEGIN
SP2  호출;
EXCPTION
END
by Oracler [2012.09.21 11:11:49]
간단하게는 SP2에서 EXCEPTION section을 삭제하면 됩니다. 자신이 처리할 수 없는 예외는 자신을 호출한 서브프로그램으로 넘기게 됩니다. 이것을 propagating이라고 하지요.

대신 이렇게 하게 되면 SP1에서 SP2를 호출한 이후부터 EXCEPTION이 나오기 전에 있는 PL/SQL 문장을 실행이 안됩니다. 즉, SP2에서 예외가 발생하면 SP1의 EXCEPTION으로 프로그램 흐름이 바로 넘어가게 됩니다.

by 최성호 [2012.09.21 11:15:57]

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