给 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相当于第一个问号,然后看结果,能查出数据来了

result

集算器 JDBC 执行的语句是 SPL 脚本,这里详细介绍了如何在 BIRT 里部署集算器 JDBC:

《BIRT 调用 SPL 脚本》

 

SPL 脚本,对于 BIRT 可不只是这一点改善能力,更多的复杂计算、性能改善、报表制作难题的需求,这里有很多解决方案:

《让 Birt 报表脚本数据源变得既简单又强大》

《解决 Birt 等报表工具制作报表的几个难题》


快速上手试试:

下载集算器

如何免费使用润乾集算器