Delen via


Geparameteriseerde query's - Querytaal in Cosmos DB (in Azure en Fabric)

Cosmos DB (in Azure en Fabric) ondersteunt query's met parameters die worden uitgedrukt door de vertrouwde @-notatie. Geparameteriseerde SQL biedt robuuste verwerking en ontsnapping van gebruikersinvoer en voorkomt onbedoelde blootstelling van gegevens via SQL-injectie.

Voorbeelden

U kunt bijvoorbeeld een query schrijven die als parameter wordt gebruikt upperPriceLimit en deze uitvoeren voor verschillende waarden op basis van price gebruikersinvoer.

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

U kunt deze aanvraag vervolgens verzenden naar Cosmos DB als een geparameteriseerd JSON-queryobject.

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

In dit volgende voorbeeld wordt het TOP argument ingesteld met een geparameteriseerde query:

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

Parameterwaarden kunnen elke geldige JSON zijn: tekenreeksen, getallen, booleaanse waarden, null, zelfs matrices of geneste JSON. Omdat Cosmos DB schemaloos is, worden parameters niet gevalideerd voor elk type.

Hier volgen voorbeelden voor geparameteriseerde query's in elke Cosmos DB SDK: