Cosmos DB (在 Azure 和 Fabric 中) 支援參數以熟悉的 @ 表示法表示的查詢。 參數化 SQL 提供強大的使用者輸入處理和轉義,並防止透過 SQL 注入意外暴露資料。
範例
例如,您可以撰寫一個作為參數的查詢 upperPriceLimit ,並根據使用者輸入針對各種 price 值執行它。
SELECT
*
FROM
p
WHERE
(NOT p.onSale) AND
(p.price BETWEEN 0 AND @upperPriceLimit)
然後,您可以將此要求作為參數化 JSON 查詢物件傳送至 Cosmos DB。
{
"query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
"parameters": [
{
"name": "@upperPriceLimit",
"value": 100
}
]
}
下一個範例會使用參數化查詢來設定 TOP 引數:
{
"query": "SELECT TOP @pageSize * FROM products",
"parameters": [
{
"name": "@pageSize",
"value": 10
}
]
}
參數值可以是任何有效的 JSON:字串、數字、布林值、空值、偶數組或巢狀 JSON。 由於 Cosmos DB 是無結構描述,因此不會針對任何類型驗證參數。
以下是每個 Cosmos DB SDK 中參數化查詢的範例: