ExecuteStoredProcedureAsync

ExecuteStoredProcedureAsync

我有一个使用SQL / DocumentDB接口的CosmosDB实例。我正在通过.NET SDK访问它。

我有用ExecuteStoredProcedureAsync调用的存储过程。但是我最多只能退回100个文档。我知道这是默认选项。我可以改变吗?

ExecuteStoredProcedureAsync的可选参数是RequestOptions对象。 RequestOptions没有MaxItemCount或延续标记的属性。

最佳答案

您需要更改SP本身,以调整您要返回的记录数量。这是一个完整示例,其中包含SP-中已实现的跳过/获取逻辑

function storedProcedure(continuationToken, take){

     var filterQuery = "SELECT * FROM ...";
     var accept = __.queryDocuments(__.getSelfLink(), filterQuery, {pageSize: take, continuation: continuationToken},

     function (err, documents, responseOptions) {
         if (err) throw new Error("Error" + err.message);

         __.response.setBody({
             result: documents,
             continuation: responseOptions.continuation
         });
     });
}


这是相应的C#代码:

        string continuationToken = null;
        int pageSize = 500;

        do
        {
            var r = await client.ExecuteStoredProcedureAsync<dynamic>(
                UriFactory.CreateStoredProcedureUri(DatabaseId, CollectionId, "SP_NAME"),
                new RequestOptions { PartitionKey = new PartitionKey("...") },
                continuationToken, pageSize);

            var documents = r.Response.result;
            // processing documents ...
            // 'dynamic' could be easily substituted with a class that will cater your needs

            continuationToken = r.Response.continuation;
        }
        while (!string.IsNullOrEmpty(continuationToken));


如您所见,有一个参数控制发送回的记录数-pageSize。您已经注意到,默认情况下pageSize是100。如果需要一次全部返回,请指定-1。

关于c# - 从ExecuteStoredProcedureAsync取回100多个文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47914932/

10-13 06:08