从问题“ CAML 中的SQL IN 等效项”中,我了解到 SharePoint 2010 具有 CAML 的 SQL“IN”等效项。另外2007版本不支持这个。OP 通过嵌套一堆 OR 语句来解决这个问题,以达到相同的结果。我对此进行了测试,嵌套确实很神奇,但是......
就我而言,我从大约 1000 个项目的列表中获取项目。我为我的 CAML 查询动态创建了一个语句,其中包含嵌套 OR 块中的所有 ID。我不担心大量嵌套块,因为这是 MSDN 关于 OR 元素的声明:
Occurrences: Minimum: 0, Maximum: Unbounded.
和:
This element can be nested inside other Or and And elements. The server supports unlimited complicated queries.
当我从 SharePoint 2007 内置 Web服务调用GetListItems方法时,我收到以下错误:
Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown. Some part of your SQL statement is nested too deeply. Rewrite the query or break it up into smaller queries.
我的代码编写正确,因为我只用 5 个嵌套的 Or 元素测试了相同的代码,结果符合预期。我的问题是:嵌套 Or 元素的限制是什么?我无法在任何地方找到它,因为微软声称这是无限的。
提前致谢!