BIRT报告,将SQL传递给查询的参数

时间:2011-07-27 18:54:47

标签: parameters birt

在Crystal Reports中,您可以将SQL直接作为字符串传递给报表的参数,并在运行报表时解析SQL。

例如,假设您要安排在每月月初运行的报告,以查找与上个月相关的数据。特定报告的查询可能如下所示:

SELECT
  sum(jobid) jobs
FROM
  job
WHERE
  created_date >= {?StartDate}
  and created_date < {?EndDate}

您可以将参数设置为字符串并将以下SQL传递给每个参数,而不是将StartDate和EndDate参数设置为日期字段并且必须每月更新发送到报表的参数:

StartDate = add_months(trunc(sysdate, 'mm'), -1)
EndDate = trunc(sysdate, 'mm')

这样,每次计划的报告运行时,它都会自动确定要运行的正确日期。它的工作原理是因为Crystal报表以文字形式传递参数而不是'trunc(sysdate,'mm')'。

是否可以将SQL传递给这样的BIRT报告参数?我正在使用BIRT plug-in for Eclipse并继续获取ORACLE错误,建议BIRT将参数作为带有单引号的SQL字符串传递给查询。

1 个答案:

答案 0 :(得分:1)

我认为你不想这样做(这是可能的,但不可取)。您打开报告直到SQL注入攻击。所以我有资格回答你的问题,如果你真的想这样做,你可以在数据集open事件中设置“this.query”到你的参数值。

更重要的是,查看问题的根源。你用的是哪个司机?最终,驱动程序准备并执行BIRT的查询。你能成功使用同一个驱动程序在BIRT外执行查询吗?另一个要查看的地方是报告中设置的参数。参数是强类型的吗?它需要强类型化以确保它可以在为“?”提交时正确插入到查询文本中您在根查询中拥有的占位符。

祝你好运!

相关问题