Compartilhar via


Consultas parametrizadas no Azure Cosmos DB for NoSQL

APLICA-SE A: NoSQL

O Azure Cosmos DB for NoSQL dá suporte a consultas com parâmetros expressos pela conhecida notação @. A SQL parametrizada oferece recursos robustos de manuseio e saída das entradas de usuário e evita a exposição acidental de dados por meio de uma injeção SQL.

Exemplos

Por exemplo, você pode gravar uma consulta que adota lastName e address.state como parâmetros e executá-la para vários valores de lastName e address.state com base na entrada de usuário.

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

Em seguida, você pode enviar essa solicitação para o Azure Cosmos DB for NoSQL como um objeto de consulta JSON parametrizado.

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

O exemplo a seguir define o argumento TOP com uma consulta parametrizada:

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

Os valores dos parâmetros podem ser qualquer JSON válido: cadeias de caracteres, números, boolianos, nulos ou até mesmo matrizes e JSON aninhados. Como o Azure Cosmos DB for NoSQL é sem esquema, os parâmetros não são validados com relação a nenhum tipo.

Aqui temos exemplos de consultas parametrizadas em cada SDK do Azure Cosmos DB for NoSQL: