Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie übergebe ich eine Variable in der WHERE IN-Klausel von Oracle SQL?

Wie Pavanred anspielte, besteht der einfachste Weg – wenn auch nicht unbedingt der beste – darin, die Werte selbst zu interpolieren. Sie sagen nicht, was Ihre Anrufsprache ist, sondern so etwas wie:

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

Das bedeutet jedoch, dass es sehr wichtig ist, dass Sie alle Werte in $1 vorab überprüft haben, um sicherzustellen, dass es sich entweder um Zahlen oder richtig maskierte Zeichenfolgen handelt oder was auch immer Sie übergeben müssen, aber keine Rohwerte sein können, die von a geliefert werden Benutzer, um eine SQL-Injection zu vermeiden.

Die andere Option besteht darin, es zu einem zweistufigen Prozess zu machen. Fügen Sie zuerst die Werte von $1 in eine temporäre Tabelle ein und wählen Sie diese Werte dann als Unterabfrage aus:

WHERE myColumn in (SELECT temp_value FROM temp_table)