简单地说,这个问题的答案是:不要将BOOLEAN与Oracle一起使用-PL / SQL是愚蠢的,并且不起作用。 使用其他数据类型运行您的进程。
给使用Oracle数据源的SSRS报告开发人员的注释:可以使用BOOLEAN参数,但要小心实现。 Oracle PL / SQL不能很好地与BOOLEAN配合使用,但是如果数据位于数据集中,则可以在Tablix过滤器中使用BOOLEAN值。 这真的让我感到震惊,因为我已经将BOOLEAN参数用于Oracle数据源。 但是在那种情况下,我过滤的是Tablix数据,而不是SQL查询。
如果数据不在您的SSRS数据集字段中,则可以使用INTEGER参数来重写SQL,如下所示:
__
Integer
0
Pickup orders?
0
NO
1
YES
...
Gmenu
=Parameters!paramPickupOrders.Value
where
(:paramPickupOrders = 0 AND ordh.PICKUP_FLAG = 'N'
OR :paramPickupOrders = 1 AND ordh.PICKUP_FLAG = 'Y' )
如果数据在SSRS数据集字段中,则可以使用带有BOOLEAN参数的tablix过滤器:
__
Boolean
false
Only orders with no load?
...
=(Parameters!paramFilterOrdersWithNoLoad.Value=false)
or (Parameters!paramFilterOrdersWithNoLoad.Value=true and Fields!LOADNUMBER.Value=0)
Equal
=true