oracle使用光标,在Oracle SQL Developer中使用引用光标

我使用的是OracleSqlDeveloper,但我在查看返回引用光标的包的结果时遇到问题。以下是程序包定义:

CREATE OR REPLACE package instance.lswkt_chgoff_recov

as

type rec_type is record

(

source_cd lswk_tpr.gltrans.tpr_source_cd%TYPE,

as_of_dt lswk_tpr.gltrans.tpr_as_of_dt%TYPE,

chrg_off_recov varchar2(5),

process_dt lswk_tpr.gltrans.dtgltran%TYPE,

effect_dt lswk_tpr.gltrans.dtgltran%TYPE,

account_nbr lswk_tpr.contract.lcontid%TYPE,

naics_cd lswk_tpr.udfdata.sdata%TYPE,

prod_type varchar2(20),

off_nbr lswk_tpr.schedule.sctrcdty%TYPE,

borrower_nm lswk_tpr.customer.scustnm%TYPE,

tran_type_cd lswk_tpr.gltrans.sglcd%TYPE,

tran_type_desc lswk_tpr.gltrans.sglcd%TYPE,

tran_amt lswk_tpr.gltrans.ctranamt%TYPE,

note_dt lswk_tpr.schedule.dtbk%TYPE,

accru_cd number,

non_accr_cd lswk_tpr.schedule.dtlstincsus%TYPE,

comm_sb_ind varchar2(4)

);

type cur_type is ref cursor return rec_type;

procedure sp

(

p_as_of_dt in date,

ref_cur in out cur_type

);

end;

/

我想问题是这是可能的,如果可能的话,我需要做什么?我正在使用Oracle SQL Developer 1.5.5。谢谢。

涉水

下面是我用来调用包(由toad生成)的代码:

DECLARE

P_AS_OF_DT DATE;

REF_CUR instance.LSWKT_CHGOFF_RECOV.CUR_TYPE;

REF_CUR_row REF_CUR%ROWTYPE;

BEGIN

P_AS_OF_DT := '31-AUG-2009';

instance.LSWKT_CHGOFF_RECOV.SP ( P_AS_OF_DT, REF_CUR );

DBMS_OUTPUT.Put_Line('REF_CUR =');

IF REF_CUR%ISOPEN THEN

DBMS_OUTPUT.Put_Line(' SOURCE_CD AS_OF_DT CHRG_OFF_RECOV PROCESS_DT EFFECT_DT ACCOUNT_NBR NAICS_CD PROD_TYPE OFF_NBR BORROWER_NM TRAN_TYPE_CD TRAN_TYPE_DESC TRAN_AMT NOTE_DT ACCRU_CD NON_ACCR_CD COMM_SB_IND');

LOOP

FETCH REF_CUR INTO REF_CUR_row;

EXIT WHEN REF_CUR%NOTFOUND;

DBMS_OUTPUT.Put_Line(

' ' || '[TPR_SOURCE_CD%type]'

|| ' ' || '[TPR_AS_OF_DT%type]'

|| ' ' || '''' || REF_CUR_row.CHRG_OFF_RECOV || ''''

|| ' ' || '[DTGLTRAN%type]'

|| ' ' || '[DTGLTRAN%type]'

|| ' ' || '[LCONTID%type]'

|| ' ' || '[SDATA%type]'

|| ' ' || '''' || REF_CUR_row.PROD_TYPE || ''''

|| ' ' || '[SCTRCDTY%type]'

|| ' ' || '[SCUSTNM%type]'

|| ' ' || '[SGLCD%type]'

|| ' ' || '[SGLCD%type]'

|| ' ' || '[CTRANAMT%type]'

|| ' ' || '[DTBK%type]'

|| ' ' || NVL(TO_CHAR(REF_CUR_row.ACCRU_CD), 'NULL')

|| ' ' || '[DTLSTINCSUS%type]'

|| ' ' || '''' || REF_CUR_row.COMM_SB_IND || '''');

END LOOP;

ELSE

DBMS_OUTPUT.Put_line(' (Ref Cursor is closed)');

END IF;

COMMIT;

END;

我得到错误:

ORA-06502:pl/sql:数值或值错误

希望这能让事情变得更清楚一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值