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

Permintaan PL/SQL DALAM string yang dipisahkan koma

Variabel bind mengikat a nilai, dalam hal ini string '45,4932,20,19'. Anda dapat menggunakan SQL dinamis dan penggabungan seperti yang disarankan oleh Randy, tetapi Anda harus sangat berhati-hati agar pengguna tidak dapat mengubah nilai ini, jika tidak, Anda memiliki masalah Injeksi SQL.

Rute yang lebih aman adalah memasukkan ID ke koleksi Apex dalam proses PL/SQL:

declare
    array apex_application_global.vc_arr2;
begin
    array := apex_util.string_to_table (:P5_USER_ID_LIST, ',');
    apex_collection.create_or_truncate_collection ('P5_ID_COLL');
    apex_collection.add_members ('P5_ID_COLL', array);
end;

Kemudian ubah kueri Anda menjadi:

SELECT * FROM users u WHERE u.user_id IN 
(SELECT c001 FROM apex_collections
 WHERE collection_name = 'P5_ID_COLL')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara untuk menggunakan RSA di Oracle/PL SQL?

  2. Membuat CTE di Oracle

  3. Teks Oracle keluar dengan kurung kurawal dan wildcard

  4. Bagaimana cara menjalankan prosedur tersimpan Oracle di Ruby

  5. REGEX untuk memilih nilai ke-n dari daftar, memungkinkan untuk nol