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

SqlQuerySpec object as a parameter for StoredProcedure in Azure DocumentDb

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

访问完整的 SQL

谢谢, 索玛。

server-side 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"}         
        ] 
    }
    '''
    

您可以将字符串直接传递到对 Collection.queryDocuments() 的调用中,但您可能必须在调用 Collection.queryDocuments()

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