Partilhar via


Consultas parametrizadas - Linguagem de consulta no Cosmos DB (no Azure e no Fabric)

O Cosmos DB (no Azure e no Fabric) dá suporte a consultas com parâmetros expressos pela conhecida notação @. O SQL parametrizado fornece manipulação robusta e fuga da entrada do usuário e evita a exposição acidental de dados por meio da injeção de SQL.

Examples

Por exemplo, você pode escrever uma consulta que usa upperPriceLimit como parâmetro e executá-la para vários valores com base na entrada do price 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 Cosmos DB 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
    }
  ]
}

Este próximo exemplo define o TOP argumento 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: strings, numbers, booleans, null, even arrays ou JSON aninhado. Como o Cosmos DB não tem esquema, os parâmetros não são validados em relação a nenhum tipo.

Aqui estão exemplos de consultas parametrizadas em cada SDK do Cosmos DB: