sql >> Database >  >> RDS >> Oracle

PL/SQL-query IN door komma's gescheiden tekenreeks

Een bindvariabele bindt a waarde, in dit geval de string '45,4932,20,19'. Je zou dynamische SQL en aaneenschakeling kunnen gebruiken zoals gesuggereerd door Randy, maar je moet heel voorzichtig zijn dat de gebruiker deze waarde niet kan wijzigen, anders heb je een SQL-injectieprobleem.

Een veiligere route zou zijn om de ID's in een Apex-verzameling te plaatsen in een PL/SQL-proces:

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;

Verander dan uw zoekopdracht in:

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


  1. Toon indexen in MySQL-tabel

  2. Rails:PG::UndefinedTabel:FOUT:relatie ... bestaat niet

  3. Wat doet SQL Server met een time-outverzoek?

  4. Voeg twee tabellen samen en sla op in third-sql