Freigeben über


Parametrisierte Abfragen – Abfragesprache in Cosmos DB (in Azure und Fabric)

Cosmos DB (in Azure und Fabric) unterstützt Abfragen mit Parametern, die von der vertrauten @Notation ausgedrückt werden. Parametrisierte SQL bietet eine robuste Behandlung und Flucht von Benutzereingaben und verhindert versehentliche Gefährdung von Daten durch SQL-Einfügung.

Examples

Sie können z. B. eine Abfrage schreiben, die als Parameter verwendet upperPriceLimit wird, und sie für verschiedene Werte price basierend auf der Benutzereingabe ausführen.

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

Sie können diese Anforderung dann als parametrisiertes JSON-Abfrageobjekt an Cosmos DB senden.

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

In diesem nächsten Beispiel wird das TOP Argument mit einer parametrisierten Abfrage festgelegt:

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

Parameterwerte können beliebige gültige JSON-Werte sein: Zeichenfolgen, Zahlen, Booleans, Null, sogar Arrays oder geschachtelte JSON. Da Cosmos DB schemalos ist, werden Parameter nicht anhand eines Typs überprüft.

Hier sind Beispiele für parametrisierte Abfragen in jedem Cosmos DB SDK: