birt报表调用存储过程传日期字符串问题

御风林海 发布于 2013/07/20 09:17
阅读 1K+
收藏 0

我要在birt报表中调用以下一个存储过程。问题是,传日期字符串时,出现以下错误

The following items have errors:

Table (id = 122):
+ An exception occurred during processing. Please see the following message for details:
Cannot get the result set metadata.
SQL statement does not return a ResultSet object.
SQL error #1: ORA-01843: not a valid month
以下是存储过程的定义,在pl/sql中已经测试通过,可以获取数据。

create or replace procedure SP_AntibioticsUse_Counter(p_beginDate varchar2, 

                                                      p_endDate   varchar2, 
                                                    p_result    out sys_refcursor ) is 
begin 
  
 OPEN p_result for 
   select deptname, useCount, visitCount 
  from (select t5.deptid, t5.deptname deptname, count(t1.patientid) useCount 
          from PA_DATA_PATIENT        t1, 
               PC_CL_DATA_RECIPE      t2, 
               PC_CL_DATA_RECIPEENTRY t3, 
               OM_DEPARTMENT          t5, 
               PH_DRUGITEM            t4 
         where t1.patientid = t2.patientid 
           and t2.recipeid = t3.recipeid 
           and t4.drugid = t3.itemid 
           and t4.ISANTIBACTERIAL = 1 
               
           and t2.inputtime >= to_date(p_beginDate, 'yyyy-mm-dd') 
           and t2.inputtime <= to_date(p_endDate, 'yyyy-mm-dd') 
           and t5.deptid = t2.deptid 
         group by t5.deptcode, t5.deptname, t5.deptid) useCount, 
        
       (select t7.deptid, count(t1.patientid) visitCount 
          from PA_DATA_PATIENT        t1, 
               PC_CL_DATA_RECIPE      t2, 
               PC_CL_DATA_RECIPEENTRY t3, 
               OM_DEPARTMENT          t7, 
               PH_DRUGITEM            t4 
         where t1.patientid = t2.patientid 
           and t2.recipeid = t3.recipeid 
           and t4.drugid = t3.itemid 
               
           and t2.inputtime >= to_date(p_beginDate, 'yyyy-mm-dd') 
           and t2.inputtime <= to_date(p_endDate, 'yyyy-mm-dd') 
           and t7.deptid = t2.deptid 
         group by t7.deptcode, t7.deptname, t7.deptid) visitCount 


 WHERE useCount.deptid = visitCount.deptid; 
            

           end SP_AntibioticsUse_Counter;


如果要用eclipse中的birt报表调用这个存储过程,该怎么弄,我的birt设置如下:(截图)

测试数据源成功!

birt调用存储过程代码

输出参数都是正确的

入参设定,字符串形式的日期。

之前的都没多大问题,预览结果集却出错了,什么问题啊?请高手指点,这个是工作的问题,任务紧急啊。

加载中
1
IdleMan
IdleMan
to_date中的月份不合法,很明显了
御风林海
御风林海
为什么我在pl/sql里面调用就没有问题呢?
0
御风林海
御风林海

引用来自“IdleMan”的答案

to_date中的月份不合法,很明显了
应该怎么改呢,望指点
0
IdleMan
IdleMan
得看参入的参数是什么?存储过程要求的是string,且符合日期规范才行。2013-2-30这种肯定非法, 201321也是非法的
0
御风林海
御风林海
参入的参数格式要是一个年-月-日的字符串,应该怎么写,比如,我想写开始日期:2013年5月1日,怎么写。
返回顶部
顶部