使用参数从.Net调用DocumentDb存储过程。

时间:2016-04-14 14:30:54

标签: .net stored-procedures azure-cosmosdb

调用sproc工作正常,但我似乎无法将参数传递给它。它可以在Azure门户中按预期工作,但不能从.net调用。

documentClient = new DocumentClient(new Uri(endpointUrl), authorizationKeyAdmin);
var sproc = documentClient.CreateStoredProcedureQuery(_companyCollection.StoredProceduresLink, "select * from root r where r.id = \"testSproc\"");
var result = documentClient.ExecuteStoredProcedureAsync<string>("dbs/GypNAB==/colls/GxpNAKrZMwA=/sprocs/GxpNAKrZMwxxxxAAAAAAAgA==/", sproc, "MyParameter");

sproc还没有真正改变

function sample(rrid) {
    var collection = getContext().getCollection();
    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT top 1 * FROM  c where c.RRID = "'+rrid+'"',
        function (err, feed, options) {
            if (err) throw err;

            // Check the feed and if empty, set the body to 'no docs found', 
            // else take 1st element from feed
            if (!feed || !feed.length) getContext().getResponse().setBody(rrid + 'no docs found!');
            else getContext().getResponse().setBody(JSON.stringify(feed[0]));
        });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

从.net调用时的输出是&#34; [object Object]没有找到文档!&#34;我希望[Object Object]成为我的参数值。如果我删除参数限制,我会得到一个正确的结果集。此外,如果我使用azure中的参数运行它,我会得到一个合适的结果集。

提前致谢。

1 个答案:

答案 0 :(得分:1)

ExecuteStoredProcedureAsync()sproc)的第二个参数映射到存储过程中的第一个参数 - 这就是rrid[object Object]中显示为var result = documentClient.ExecuteStoredProcedureAsync<string>("dbs/GypNAB==/colls/GxpNAKrZMwA=/sprocs/GxpNAKrZMwxxxxAAAAAAAgA==/", "MyParameter"); 的原因。输出

尝试跑步:

{{1}}
相关问题