Sdílet prostřednictvím


Parametrizované dotazy – Dotazovací jazyk ve službě Cosmos DB (v Azure a prostředcích infrastruktury)

Cosmos DB (v Azure a Prostředcích infrastruktury) podporuje dotazy s parametry vyjádřenými známým zápisem @ . Parametrizovaný SQL poskytuje robustní zpracování a únik uživatelského vstupu a zabraňuje náhodnému vystavení dat prostřednictvím injektáže SQL.

Examples

Můžete například napsat dotaz, který přebírá upperPriceLimit jako parametr, a spouštět ho price pro různé hodnoty na základě uživatelského vstupu.

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

Tento požadavek pak můžete odeslat do Cosmos DB jako parametrizovaný objekt dotazu JSON.

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

Tento další příklad nastaví TOP argument parametrizovaným dotazem:

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

Hodnoty parametrů můžou být libovolné platné JSON: řetězce, čísla, logické hodnoty, null, sudé pole nebo vnořené JSON. Vzhledem k tomu, že služba Cosmos DB je bez schématu, parametry se neověřují vůči žádnému typu.

Tady jsou příklady parametrizovaných dotazů v každé sadě SDK služby Cosmos DB: