Aracılığıyla paylaş


Parametreli sorgular - Cosmos DB'de sorgu dili (Azure ve Doku'da)

Cosmos DB (Azure ve Doku'da), tanıdık @ gösterimiyle ifade edilen parametrelere sahip sorguları destekler. Parametreli SQL, kullanıcı girişinin sağlam bir şekilde işlenmesini ve kaçılmasını sağlar ve SQL ekleme yoluyla verilerin yanlışlıkla açığa çıkmasını önler.

Örnekler

Örneğin, parametre olarak alan upperPriceLimit bir sorgu yazabilir ve kullanıcı girişini price temel alan çeşitli değerler için yürütebilirsiniz.

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

Ardından bu isteği Cosmos DB'ye parametreli JSON sorgu nesnesi olarak gönderebilirsiniz.

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

Sonraki örnekte bağımsız değişken parametreli bir sorguyla ayarlır TOP :

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

Parametre değerleri geçerli herhangi bir JSON olabilir: dizeler, sayılar, boole'lar, null, hatta diziler veya iç içe JSON. Cosmos DB şemasız olduğundan parametreler herhangi bir türde doğrulanmaz.

Her Cosmos DB SDK'sında parametreli sorgu örnekleri aşağıda verilmiştir: