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: