给 BIRT 的 SQL 数据集传多值参数
导读关键词:BIRT SQL 多参数 IN
问题
在 BIRT 里通过 JDBC 连接 MYSQL,创建了个带参数的 SQL 数据集:
select * from tag where tag_name in (?)
期望传入多个逗号分割的值,又因为值是字符串类型,就给每个值加了单引号:'join','rank','group',但预览结果看不到数据,原因在于JDBC因为“预防SQL注入”的安全问题,禁止了这种多值参数的传值方式。
解答
那是不是所有JDBC都没有这种方便传多值参数的能力呢,换成集算器JDBC试试:
=connect("raqdoc").query("select * from tag where tag_name in ("+arg1+")")
arg1相当于第一个问号,然后看结果,能查出数据来了
集算器 JDBC 执行的语句是 SPL 脚本,这里详细介绍了如何在 BIRT 里部署集算器 JDBC:
SPL 脚本,对于 BIRT 可不只是这一点改善能力,更多的复杂计算、性能改善、报表制作难题的需求,这里有很多解决方案:
《解决 Birt 等报表工具制作报表的几个难题》快速上手试试: