C# 在Oracle查询字符串中拆分IN条件

C# 在Oracle查询字符串中拆分IN条件,c#,string,oracle,split,C#,String,Oracle,Split,在Silverlight应用程序中,我使用工具生成报告。我使用Oracle查询在独立应用程序中创建报告,然后在应用程序中呈现报告 在报表上,我可以设置多值过滤器,例如类别列表,并在查询的in条件中使用它: WHERE IDCATEGORY IN(:CategoryFilter) 问题是,如果我的过滤器的值超过1000个,我会得到一个错误(“ORA-01795:in”中的值数不能超过1000。) 在执行查询之前,我有权访问该查询,因此我可以使用字符串分割我的IN条件。替换…或者是否有其他方法可以

在Silverlight应用程序中,我使用工具生成报告。我使用Oracle查询在独立应用程序中创建报告,然后在应用程序中呈现报告

在报表上,我可以设置多值过滤器,例如类别列表,并在查询的in条件中使用它:

WHERE IDCATEGORY IN(:CategoryFilter)
问题是,如果我的过滤器的值超过1000个,我会得到一个错误(“ORA-01795:in”中的值数不能超过1000。)

在执行查询之前,我有权访问该查询,因此我可以使用字符串分割我的IN条件。替换…或者是否有其他方法可以使用1000个以上的值来执行该工作

知道怎么做吗

例如,来自:

"...WHERE IDCATEGORY IN(1,2,3,4,5,6,7,...,999,1001, 1002, 1003)..."
致:


我认为最简单的尝试方法是:1.为IDs创建(或清除)temp表2.插入IDs 3.使用join from table to temp代替in子句。感谢您的回答!我的参数只是一个类似“1,2,3,4,5”的字符串“。我可以从中创建一个临时表吗?这不是一个答案,只是一个建议。”。我相信拆分、解析和插入“1,2”不会有什么困难,但临时表可能存在很大的并发性问题(当有两个或多个查询同时清除和填充时),因此您必须以某种方式唯一地标识每个请求的数据(可能使用另一个包含唯一请求ID的列)。
"...WHERE IDCATEGORY IN(1,2,3,4,5,6,7,...,999,1000) OR IN (1001, 1002, 1003)..."