Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn PL / SQL TRONG chuỗi phân cách bằng dấu phẩy

Biến ràng buộc liên kết a giá trị, trong trường hợp này là chuỗi '45, 4932,20,19 '. Bạn có thể sử dụng SQL động và phép nối theo đề xuất của Randy, nhưng bạn cần phải hết sức cẩn thận rằng người dùng không thể sửa đổi giá trị này, nếu không bạn gặp sự cố SQL Injection.

Một lộ trình an toàn hơn sẽ là đặt các ID vào bộ sưu tập Apex trong quy trình 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;

Sau đó, thay đổi truy vấn của bạn thành:

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. Oracle SQL - Tạo và cập nhật một cột với số ngẫu nhiên khác nhau trong mỗi hàng

  2. Trình nghe Oracle không chạy và sẽ không khởi động

  3. Làm thế nào để chỉnh sửa thủ tục đã lưu trong Oracle SQL Developer?

  4. Cách tạo chỉ mục cho chuỗi tìm kiếm động

  5. Bỏ qua thông số phạm vi ngày trong mệnh đề where khi thông số không được nhập