Oracle
 sql >> база данни >  >> RDS >> Oracle

PL/SQL заявка В низ, разделен със запетая

Свързващата променлива свързва a стойност, в този случай низът '45,4932,20,19'. Можете да използвате динамичен SQL и конкатенация, както е предложено от Ранди, но ще трябва да внимавате потребителят да не може да промени тази стойност, в противен случай имате проблем с инжектирането на SQL.

По-безопасен път би бил да поставите идентификаторите в Apex колекция в 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;

След това променете заявката си на:

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. REGEX, за да изберете n-та стойност от списък, позволявайки нулеви стойности

  2. Използвайте псевдоним на колона в същия избор

  3. PL/SQL:Разлика между две дати

  4. Множество бази данни с леко променящи се модели. Как да позволя на `EF` да работи с различни структури на бази данни по време на изпълнение?

  5. Поддържане на база данни на приложения агностична (ADO.NET срещу капсулираща логика на DB)