Azure Cosmos DB for NoSQL のパラメーター化されたクエリ
適用対象: NoSQL
Azure Cosmos DB for NoSQL では、使い慣れた @ 表記で表されたパラメーターを使用するクエリがサポートされます。 パラメーター化された SQL により、ユーザーの入力を堅牢に処理し、流用して、SQL インジェクションによってデータが誤って開示されるリスクを回避することができます。
例
たとえば、パラメーターとして upperPriceLimit
を使用するクエリを記述し、ユーザー入力に基づいて、price
にさまざまな値を指定して実行できます。
SELECT
*
FROM
p
WHERE
(NOT p.onSale) AND
(p.price BETWEEN 0 AND @upperPriceLimit)
さらに、パラメーター化された JSON クエリ オブジェクトとしてこの要求を Azure Cosmos DB for NoSQL に送信できます。
{
"query": "SELECT * FROM p WHERE (NOT p.onSale) AND (p.price BETWEEN 0 AND @upperPriceLimit)",
"parameters": [
{
"name": "@upperPriceLimit",
"value": 100
}
]
}
この次の例では、パラメーター化されたクエリで TOP
引数を設定しています。
{
"query": "SELECT TOP @pageSize * FROM products",
"parameters": [
{
"name": "@pageSize",
"value": 10
}
]
}
パラメーターの値には、有効な任意の JSON (文字列、数値、ブール値、null、配列や入れ子になった JSON も含む) を指定できます。 Azure Cosmos DB for NoSQL はスキーマレスであるため、パラメーターはどの型に対しても検証されません。
各 Azure Cosmos DB for NoSQL SDK のパラメーター化されたクエリの例を次に示します。