分享方式:


Azure Cosmos DB for NoSQL 中的參數化查詢

適用於:NoSQL

Azure Cosmos DB for NoSQL 支援查詢,而查詢具有以常見 @ 標記法表示的參數。 參數化 SQL 可穩健處理和逸出使用者輸入,以及防止透過 SQL 插入而意外洩露資料。

範例

例如,您可以撰寫採用 upperPriceLimit 做為參數的查詢,並根據使用者輸入針對的各種 值 price 執行查詢。

SELECT
    *
FROM
    p
WHERE
    (NOT p.onSale) AND
    (p.price BETWEEN 0 AND @upperPriceLimit)

然後,您可以將此要求傳送給 Azure Cosmos DB for NoSQL 來作為參數化 JSON 查詢物件。

{
  "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:字串、數字、布林值、Null,甚至是陣列或巢狀 JSON。 因為 Azure Cosmos DB for NoSQL 沒有結構描述,所以不會對任何類型驗證參數。

以下是每個 Azure Cosmos DB for NoSQL SDK 中的參數化查詢範例: