open cursor for sql报缺失表达式?
我写的存储过程在执行时顺利通过了,调用时报缺失表达式,求大神给看看怎么回事?
create or replace procedure get_form_data(p_date varchar2,str1 varchar2,str2 varchar2,str3 varchar2,str4 varchar2,str5 varchar2)IS
t_date date;
t_dept varchar2(36);
t_identity varchar2(36);
t_charge varchar2(36);
t_operator varchar2(36);
t_type varchar2(36);
t_time varchar2(36);
t_outp number(6,2);
t_emer number(6,2);
t_daytimeoutp number(6,2);
t_daytimeemer number(6,2);
t_night number(6,2);
t_holidayoutp number(6,2);
t_holidayemer number(6,2);
t_export number(6,2);
t_regist number(6,2);
CUR1 SYS_REFCURSOR;
sql_statement varchar2(3000):='select dim_date,'||str1||','||str2||','||str3||','||str4||','||str5||',sum(t.outp_nums) OUPT_NUMS,sum(emer_nums) EMER_NUMS,
sum(daytime_outp_nums) DAYTIME_OUTP_NUMS,sum(daytime_emer_nums) DAYTIME_EMER_NUMS,
SUM(NIGHT_OUTP_NUMS) NIGHT_OUTP_NUMS,SUM(HOLIDAY_OUTP_NUMS) HOLIDAY_OUTP_NUMS,SUM(HOLIDAY_EMER_NUMS) HOLIDAY_EMER_NUMS,SUM(EXPORT_OUTP_NUMS) EXPORT_OUTP_NUMS,
SUM(REGIST_CHARGES) REGIST_CHARGES
from VDSS_CLINIC_MASTER_REC t where t.DIM_DATE=to_date('||p_date||',"yyyy/MM/dd") and rownum <=2000 group by '||str1||','||str2||','||str3||','||str4||','||str5||';';
BEGIN
delete from temp_form_data;
open CUR1 for sql_statement;
loop
fetch cur1 into t_date,t_dept,t_identity,t_charge,t_operator,t_type,t_time,t_outp,t_emer,t_daytimeoutp,t_daytimeemer,t_night,t_holidayoutp,
t_holidayemer,t_export,t_regist;
exit when CUR1%notfound;
insert into temp_form_data values(t_date,t_dept,t_identity,t_charge,t_operator,t_type,t_time,t_outp,t_emer,t_daytimeoutp,t_daytimeemer,t_night,t_holidayoutp,
t_holidayemer,t_export,t_regist);
end loop;
close CUR1;
commit;
END;