Dela via


Parametriserade frågor i Azure Cosmos DB för NoSQL

GÄLLER FÖR: NoSQL

Azure Cosmos DB for NoSQL stöder frågor med parametrar som uttrycks av den välbekanta @-notationen. Parameteriserad SQL ger robust hantering och undsättning av användarindata och förhindrar oavsiktlig exponering av data via SQL-inmatning.

Exempel

Du kan till exempel skriva en fråga som tar upperPriceLimit som en parameter och köra den för olika värden price baserat på användarindata.

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

Du kan sedan skicka den här begäran till Azure Cosmos DB för NoSQL som ett parametriserat JSON-frågeobjekt.

{
  "query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
  "parameters": [
    {
      "name": "@upperPriceLimit",
      "value": 100
    }
  ]
}

I nästa exempel anges TOP argumentet med en parametriserad fråga:

{
  "query": "SELECT TOP @pageSize * FROM products",
  "parameters": [
    {
      "name": "@pageSize",
      "value": 10
    }
  ]
}

Parametervärden kan vara valfri giltig JSON: strängar, tal, booleska värden, null, till och med matriser eller kapslad JSON. Eftersom Azure Cosmos DB för NoSQL är schemalös verifieras inte parametrar mot någon typ.

Här är exempel på parametriserade frågor i varje Azure Cosmos DB för NoSQL SDK: