sql >> Database >  >> RDS >> Oracle

hoe een variabele door te geven in de WHERE IN-clausule van Oracle SQL?

Zoals Pavanred al aangaf, is de gemakkelijkste manier - hoewel niet noodzakelijk de beste - om de waarden zelf te interpoleren. Je zegt niet wat je roeptaal is, maar zoiets als:

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

Dit betekent echter dat het erg belangrijk is dat u alle waarden in $1 vooraf hebt gecontroleerd om er zeker van te zijn dat het getallen zijn, of correct ontsnapte tekenreeksen, of wat dan ook dat u moet doorgeven, maar dat het geen onbewerkte waarden kunnen zijn die worden geleverd door een gebruiker, om een ​​SQL-injectie te voorkomen.

De andere optie is om er een proces in twee stappen van te maken. Voeg eerst de waarden van $1 in een tijdelijke tabel in en selecteer die waarden vervolgens als een subquery:

WHERE myColumn in (SELECT temp_value FROM temp_table)


  1. Hibernate-toewijzing tussen PostgreSQL-enum en Java-enum

  2. Kan geen verbinding maken met MySQL-server op localhost (10061) in venster 7

  3. Aangepaste aggregatiefunctie (concat) in SQL Server

  4. Hoe praat Access met ODBC-gegevensbronnen? Deel 5