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



我们有一个使用iReport设计器和JasperReports服务器完美运行的报告。

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

我收到如下错误:

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;

欢迎指教

从我所看到的,所有的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。你可能想要改变它,看看这是否是输入参数的问题。这也可能是个问题。

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新