修改存储过程后,报告停止在JasperReports Server上工作

时间:2013-04-29 22:02:26

标签: jasper-reports jasperserver

我们的报告使用 iReport 设计器以及 JasperReports Serer 完美运行。

我对底层的 MySQL 存储过程做了一些小的修改,并相应地调整了报表结构,现在我可以从Designer界面运行报表,但根本不能从服务器运行。< / p>

我收到如下错误:

Error Message

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date

我理解这是我们在报告中使用的日期之一的问题,但我所知道的日期信息都没有改变。

我首先要附上报告和存储过程的顶部:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_fasb`(start_date varchar(10), end_date     varchar(10), loc varchar(45))
BEGIN
declare friday_end_date varchar(10);
declare in_str varchar(255);

if dayofweek(end_date) = 7 then
  SET friday_end_date = date_add(end_date, interval 6 day);
else
  SET friday_end_date = date_add(end_date, interval (6-dayofweek(end_date)) day);
end if; 

if dayofweek(end_date) = 7 then
SET end_date = date_add(end_date, interval -1 day);
end if;

if dayofweek(end_date) = 1 then
  SET end_date = date_add(end_date, interval -2 day);
end if;

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

根据我的看法,所有date数据类型都是varchar(10)

由于您使用的是date_add函数,因此不能将'start_date'作为字符串。

在MYSQL上尝试此操作时

SELECT date_add(curdate(), interval 6 day);
Result:2013-05-06

但是当你尝试

SELECT date_add('2013-04-30', interval 6 day);

You do not get any result or you get 'BLOB'这意味着它期望在函数内部有一个Date数据类型的变量。

同样在您的报告中,您可能将输入参数定义为java.util.Date。 您可能想要更改它,看看这是否是输入参数的问题。 这也可能是个问题。

希望这有帮助。!