sql >> Database teknologi >  >> RDS >> Oracle

hvordan man sender en variabel i WHERE IN klausul af oracle sql?

Som Pavanred hentydede til, er den nemmeste måde - selvom ikke nødvendigvis den bedste - at interpolere værdierne selv. Du siger ikke, hvad dit kaldesprog er, men noget som:

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

Dette betyder dog, at det er meget vigtigt, at du har forhåndstjekket alle værdierne i $1 for at sikre, at de enten er tal eller korrekt escaped strenge, eller hvad det nu ellers er, du skal bestå, men ikke kan være råværdier leveret af en bruger, for at undgå en SQL-injektion.

Den anden mulighed er at gøre det til en to-trins proces. Indsæt først værdierne fra $1 i en midlertidig tabel, og vælg derefter disse værdier som en underforespørgsel:

WHERE myColumn in (SELECT temp_value FROM temp_table)


  1. Oracle lag mellem commit og select

  2. Optimering af MySQL-forespørgsel til søgning i heltalsområde

  3. Masseindlæsning i PostgreSQL fra en fjernklient

  4. SQL/Oracle:når indekser på flere kolonner kan bruges