「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.
ネストされた Or 要素を 5 つだけ使用して同じコードをテストし、結果が期待どおりであるため、コードは正しく記述されています。私の質問は: ネストされた Or 要素の制限は何ですか? Microsoft はこれが無制限であると主張しているため、これはどこにもありません。
前もって感謝します!