Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment passer une variable dans la clause WHERE IN d'oracle sql?

Comme Pavanred y a fait allusion, le moyen le plus simple - mais pas nécessairement le meilleur - est d'interpoler les valeurs vous-même. Vous ne dites pas quelle est votre langue d'appel, mais quelque chose comme :

sql = "SELECT something FROM whatever WHERE myColumn in (" + $1 + ")"

Cependant, cela signifie qu'il est très important que vous ayez pré-vérifié toutes les valeurs dans $1 pour vous assurer qu'il s'agit soit de nombres, soit de chaînes correctement échappées, ou de tout autre élément que vous devez transmettre, mais qui ne peuvent pas être des valeurs brutes fournies par un utilisateur, pour éviter une injection SQL.

L'autre option consiste à en faire un processus en deux étapes. Commencez par insérer les valeurs de $1 dans une table temporaire, puis sélectionnez ces valeurs en tant que sous-requête :

WHERE myColumn in (SELECT temp_value FROM temp_table)