我有一个Pesky SSRS报告问题在我的报告的主查询中有一个条件可以有超过1000个选项,当用户选择全部它会失败,因为我的后端数据库是Oracle。我做了一些研究,找到了可行的解决方案。
解决方案
重写in子句,就像这样
(1,ColumnName) in ((1,Searchitem1),(1,SearchItem2))
当我这样做时,这将有效
(1,ColumnName) in ((1,:assignedValue))
并只传递一个值。但是当我传递多个值时它会失败并给我ORA-01722:无效的数字错误
我尝试了多个相同条款的组合,但没有任何工作
感谢任何帮助...
答案 0 :(得分:1)
狂野猜测:您的:assignedValue
是以逗号分隔的数字列表,Oracle会尝试将其解析为单个数字。
将多个值作为IN
查询的单个值传递(几乎)永远不是一个好主意 - 要么必须使用字符串连接(容易出现SQL注入和可怕的性能),要么必须要有固定数量的参数IN
(通常不是你想要的)。
我建议你
INSERT
将您的搜索项目放入临时表JOIN
SELECT
此搜索表