如何将单个参数,多个参数或null传递给报表

时间:2017-08-14 04:56:19

标签: oracle oracle11g business-intelligence bi-publisher

我正在尝试从查询中创建一个报表,该报表返回包含以下内容的事务列表: Trans_IdTrans_Typedateamountstatusclient

查询将简单如下:

Select  Trans_Id, Trans_Type, date, amount, status, client
from table.

我想要做的是将所有列添加为报表的参数,允许用户填充一个参数或多个参数,并根据该参数返回数据或填充任何内容,以便返回所有内容。 这就像激活WHERE条件一样,如果参数被填充,否则返回所有内容。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用动态SQL基于填充的参数组装SELECT语句的函数。但是,对于您发布的简单查询,这可能有点过分。

此解决方案测试每个参数是否为null或将其与相关列进行比较:

Select Trans_Id, Trans_Type, date, amount, status, client 
from your_table yt
where ( :p_Trans_Id is null or :p_Trans_Id = yt.Trans_Id ) 
and ( :p_Trans_Type is null or :p_Trans_Type = yt.Trans_Type ) 
and ( :p_date is null or :p_date = yt.date ) 
and ( :p_amount is null or :p_amount = yt.amount ) 
and ( :p_status is null or :p_status = yt.status ) 
and ( :p_client is null or :p_client = yt.client )
/  

这是一种公认​​的技术,但调整此类查询可能很困难。因此,请务必使用实际数据量对其进行彻底测试。

注意:参数语法因用于调用语句的客户端而异。