我正在更改基于Oracle的SSRS报告,我遇到了各种各样的参数问题。
与Oracle的连接是OLE DB。
我的代码没有做任何复杂的事情。我只添加了一个新参数。当我只有一个所述参数的实例时,它运行没有任何问题。一旦我再次添加它,它就会爆炸。
我想要做的是显示参数是否匹配的记录。如果不匹配,则显示所有记录。
我可以在DBVisualizer中运行这两个查询而不会出现任何问题。
这就是我所做的
WHERE FieldName = nvl(:parameter, FieldName)
这个没有返回与下面相同的结果
WHERE FieldName = :parameter
OR :parameter IS NULL
问题是第二个WHERE
子句不能在带有OLE DB连接的SSRS中运行。遗憾的是,我们无法使用其他连接管理器。
编辑:感谢Hannover Fist,我能够通过这样做来实现这一目标
我改变了我的WHERE
条款
WHERE FieldName = :parameter
OR :parameter2 IS NULL
然后映射参数2以从与原始参数相同的SSRS参数中拉出
我还没有找到解决这个问题的好方法,但我通过在Oracle SQL中声明参数并将其映射到SSRS参数来解决这个问题。
然后在查询的其余部分中使用Oracle SQL中创建的参数。这样,您只能使用每个SSRS参数一次。