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
类型实际上会在发送之前转换为该类型。
因此,您可以通过以下两种方式在存储过程中编写参数化查询。
在发送给存储过程的参数包中,包含一个 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>)
- 如果您知道每次调用此存储过程时查询的形状都相同,那么您可以将查询的每个参数作为存储过程的参数发送。然后,您必须在存储过程的 JavaScript 中编写
filterQuery
对象。
我们可以将 SqlQuerySpec 对象作为参数传递给 Document Db 中的存储过程吗?我认为这使我们能够灵活地将参数化 SQL 文本和参数发送到过程。如果这不可能,我想知道是否可以从 SqlQuerySpec.
访问完整的 SQL谢谢, 索玛。
server-side API 采用与 REST 和 node.js API 相同的 JSON 字符串。在执行常规查询时,.NET SDK 的 SqlQuerySpec
类型实际上会在发送之前转换为该类型。
因此,您可以通过以下两种方式在存储过程中编写参数化查询。
在发送给存储过程的参数包中,包含一个 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>)
- 如果您知道每次调用此存储过程时查询的形状都相同,那么您可以将查询的每个参数作为存储过程的参数发送。然后,您必须在存储过程的 JavaScript 中编写
filterQuery
对象。