birt动态sql 传递参数

本文介绍了使用BIRT报表工具时如何将参数正确传递给IN子句的方法。提供了两种实用的技术,一种是在数据集属性绑定中直接进行SQL拼接,另一种则通过脚本动态生成SQL。这两种方法都能有效地实现参数化查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Birt参数在IN中的传递
我们在用Birt做报表开发时,有时需要给In传递参数,此时我们就不能用普通的参数传递方法,而需要做一定的处理。如有下面的SQL
select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score
from score s,subject sub
where s.subject_code = sub.subject_code
and s.stu_code in ('200232027601','200232027602')
and s.subject_code in (100001,100002)
需要把stu_code 和subject_code 作为参数从外面(页面)传递进来。其方法有:
第一种方法:
数据源的建立就省略了。重点是我们在建立数据集时直接在"Property Binding"中进行SQL拼装,即为:
this.queryText = "select s.id,s.stu_code,s.subject_code,sub.subject_name,s.score from score s,subject sub"+
" where s.subject_code = sub.subject_code and s.stu_code in (" + params["stu_code"].value +
") and s.subject_code in ( "+params["subject_code"].value+ ")" ,如下图:
Birt参数IN中数据集.jpg

其中参数stu_code,subject_code和以前一样的建法。最后我们在浏览输入参数时如下图:
Birt参数结果.jpg

第二种方法,其实与第一种是大同小异,总体思路就是拼SQL,


最后只需要对SQL进行拼装,点中相应的DataSet,在Script中写相应的脚本,如:this.queryText = this.queryText + " ("+ params["stu_code"].value +")" + " and s.subject_code in ("+params["subject_code"].value + ")",预览与上面的一样,就不重复了,到此,在In中传递参数就结束了。希望对大家有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值