过程如下:
create or replace procedure pro_out_sr_pm_day_rep
(
P_f_code in varchar2,
p_F_Date in number)
as
v_f_name varchar(20);
v_sum_fee number;
v_sum_fee_bh number;
v_sum_fee_sort_bh number;
v_tmp number;
type refcur is ref cursor;
v_sort_bh refcur;
begin
select to_number(LASTMON_VAL) into v_tmp from D_DATE_LASTMON where to_char(DATE_VAL) = p_F_Date;
open v_sort_bh for
'select a.f_name,b.sum_fee ,b.sum_fee_sort - a.sum_fee_sort from ACCT_ITEM_count_'||p_F_Date||' a,ACCT_ITEM_count_'||v_tmp||' b where a.f_code = b.f_code and a.f_code='||P_f_code;
loop
fetch v_sort_bh into v_f_name,v_sum_fee,v_sum_fee_sort_bh;
exit when v_sort_bh%NOTFOUND;
dbms_output.put_line(
v_f_name||','||v_sum_fee||','||v_sum_fee_sort_bh );
end loop;
close v_sort_bh;
end;
/
编译没有问题。
但执行 exec pro_out_sr_pm_day_rep('270-23',20101121)就报错。报错信息为:无效数字。
但是把游标指定的sql改为:'select a.f_name,b.sum_fee ,b.sum_fee_sort - a.sum_fee_sort from ACCT_ITEM_count_'||p_F_Date||' a,ACCT_ITEM_count_'||v_tmp||' b where a.f_code = b.f_code';就能够正确执行,想个半天也不知道参数P_f_code问题在哪里?请教各位!
说明:其实表中p_F_Date,v_tmp传递进来的就是日期参数,两个对比日期;
表ACCT_ITEM_count_20101121 数据类型如下:
desc ACCT_ITEM_count_20101121;
F_CODE VARCHAR2(15)
F_NAME VARCHAR2(50)
SUM_FEE NUMBER(15,2)
SUM_FEE_SORT NUMBER(2)
QTSJ_FEE NUMBER(15,2)
QTSJ_FEE_SORT NUMBER(2)。