Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bagaimana cara melewatkan variabel dalam klausa WHERE IN dari Oracle sql?

Seperti yang disinggung Pavanred, cara termudah -- meskipun belum tentu yang terbaik -- adalah dengan menginterpolasi nilai-nilai itu sendiri. Anda tidak mengatakan apa bahasa panggilan Anda, tetapi sesuatu seperti:

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

Namun, ini berarti sangat penting bahwa Anda telah memeriksa terlebih dahulu semua nilai dalam $1 untuk memastikan bahwa itu adalah angka, atau string yang diloloskan dengan benar, atau apa pun yang harus Anda lewati tetapi tidak dapat berupa nilai mentah yang disediakan oleh a pengguna, untuk menghindari injeksi SQL.

Pilihan lainnya adalah menjadikannya proses dua langkah. Pertama, masukkan nilai dari $1 ke tabel sementara, lalu pilih nilai tersebut sebagai subkueri:

WHERE myColumn in (SELECT temp_value FROM temp_table)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menggunakan EXECUTE IMMEDIATE dengan beberapa argumen pengikatan yang sama

  2. pekerjaan rumah - mencoba menghitung beberapa pemberhentian penerbangan antara dua kota?

  3. Pencegahan SQL Injection dengan query SQL ALTER USER dinamis

  4. Proses upgrade langkah demi langkah ke R12.2 Upgrade bagian -2 (Driver Upgrade Utama untuk R12.2.0)

  5. Apakah mungkin untuk membunuh satu kueri di Oracle tanpa mematikan sesi?