이중 커서 선언이구요...
그중 맨 처음 커서의 select 문에 in 이 있어요.
그것은 프로시저 호출할때 파라미터 값이에요.
프로시저 호출은,
exec sp_aac_102delete_p2( '750,749',a );
이런식으로 했어요...
위에 '750,749' 가 아래 첫번째 커서의 in 에 들어가고...
그 결과값 갯수만큼 커서2가 돌아가는 형식이어야 하는데요.
처음부터 막혀요...ㅠ.ㅠ
그리고 아래 방식처럼 이중커서 사용하는것도 맞는지.... ㅠ.ㅠ
도와주세요......
======================================================================
CREATE OR REPLACE procedure ACCT.sp_test
(
arg_expn_no in varchar2,
ret_msg out varchar2
) is
ld_expn_no aacm_expd.o_pay%type := 0; -- 지급번호
cursor c_expd_list_proc is
SELECT o_pay
FROM AACM_EXPD
WHERE D_YY = arg_base_year
AND I_OFFI = arg_offi_cd
and O_PAY IN (arg_expn_no);
cursor c_expd_proc (ld_expn_no in number) is
SELECT col1, col2
FROM AACM_ORIEXPD D
WHERE D_YY = arg_base_year
AND I_OFFI = arg_offi_cd
and O_PAY = ld_expn_no;
begin
for f_expd_list_proc in c_expd_list_proc LOOP -- 첫번째커서 루프
ld_expn_no := f_expd_list_proc.o_pay;
for f_expd_proc in c_expd_proc(f_expd_list_proc.o_pay) loop --두번째커서 첫번째커서 변수로 루프
기타작업1
end loop;
기타작업2
if ret_msg <> 'SUCCESS' then
ROLLBACK WORK;
return;
else
ret_msg := 'SUCCESS';
COMMIT;
end if;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK WORK;
ret_msg := '오류 최종 (Massage : '||replace(replace(replace(sqlerrm,'"',''), chr(10),''), chr(13),'')||')';
return;
end sp_test;
/