SqlQuerySpec对象作为Azure DocumentDb中StoredProcedure的参数

时间:2017-02-05 19:55:13

标签: azure azure-cosmosdb

我们可以将SqlQuerySpec对象作为参数传递给Document Db中的存储过程吗?我认为这使我们可以灵活地将参数化的SQL文本和参数发送到过程。如果这不可能,我想知道是否可以从SqlQuerySpec访问完整的SQL。

谢谢你, 索玛。

1 个答案:

答案 0 :(得分:1)

服务器端API采用与REST和node.js API相同的JSON字符串。 .NET SDK的SqlQuerySpec类型实际上会在执行常规查询之前将其转换为此类型。

因此,您可以通过两种方法在存储过程中编写参数化查询。

  1. 在发送到存储过程的参数包中,包含一个JSON字符串,如下所示:

    '''
    {      
        "query": "SELECT * FROM books b WHERE (b.Author.Name = @name)",     
        "parameters": [          
             {"name": "@name", "value": "Herman Melville"}         
        ] 
    }
    '''
    
  2. 您可以将字符串直接传递给Collection.queryDocuments(),但在致电JSON.parse(<your string>)

    之前,您可能必须Collection.queryDocuments()
    1. 如果您知道每次调用此存储过程时查询的形状都相同,那么您可以将查询的每个参数作为存储过程的参数发送。然后,您必须在存储过程的JavaScript中编写filterQuery对象。