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

Oracle menggunakan string di dalam kondisi IN

in digunakan dengan collections , jadi string input Anda terlebih dahulu harus diubah menjadi collection (dengan memecah menjadi beberapa baris, berdasarkan pembatas koma)

Coba sesuatu seperti ini

Select * from employ where id = 12 and org_id in (
SELECT decode(:input_id,null,  (select  employ.org_id from dual) 
,TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)) )  
    FROM (SELECT  :input_id temp FROM DUAL)
    CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+')
    )

ngomong-ngomong, org_id in () akan mengembalikan true jika :input_id adalah null .

Pendekatan lain akan membuat seluruh kueri sebagai string terlebih dahulu dan kemudian menjalankannya dengan execute immediate atau melalui php . Namun ini dapat meningkatkan injeksi sql kekhawatiran.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. batas waktu transaksi tidak berfungsi saat hibernasi dengan Oracle

  2. 4 Cara Menemukan Baris yang Mengandung Huruf Besar di Oracle

  3. Tomcat 6/7 JNDI dengan banyak sumber data

  4. Jumlah hari Jumat di antara dua tanggal

  5. Penasihat Kompresi 11gR2 =Jahat