[ORACLE]프로시저에서 커서 이용해서 돌리기 CHR 이용
function GET_AMT_BOND_CMT
/*
i00의 채권(detail_i00)들에 대한 간략한 설명을 리턴하는 함수
예) 국민카드 100만원, 조흥은행 50만원
호출자) SPC 채권계산서 신고 프로시져(SP_CRSS_LN_COMPLETE)
작성자) 이성훈(2004/02/23)
*/
(
p_id in CRSS_LN_MAIN.resident_no%TYPE
)
return varchar
is
/* 설명을 담는 변수 */
v_cmt varchar(2000);
v_return varchar(2000);
/* 설명을 추출하는 커서 */
cursor amt_cmt(v_id CRSS_LN_MAIN.resident_no%TYPE) is
select replace(b.creditor_name,'(AMC)','') || ' ' ||
trim(trunc(
(sum(nvl(rest_prn_amt-deduct_prn_amt,0))+sum(nvl(rest_fee_amt-deduct_fee_amt,0))+
sum(nvl(rest_int_amt-deduct_int_amt,0))+sum(col_user.get_interest_i00(chae_no, creditor_g, chae_num, to_char(sysdate+7,'yyyymmdd'))-deduct_dint_amt)+
sum(nvl(rest_pre_amt-deduct_pre_amt,0))+col_user.get_userpre_i00(p_id))
/ 10000))
||' 만원' as "cmt"
from creditor_info b, detail_i00 a
where a.chae_no=p_id
and a.creditor_g=b.creditor_code
group by b.creditor_name;
begin
v_return:='(';
open amt_cmt(p_id);
loop
fetch amt_cmt into v_cmt;
exit when amt_cmt%notfound;
v_return := v_return || v_cmt || ', ';
end loop;
/* 마지막 콤마를 제거한다. */
v_return := v_return || '*';
v_return := replace(v_return, ', *', ')');
return v_return;
exception when others then
return '상록수 채권';
end;