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')