sql >> Databasteknik >  >> RDS >> Oracle

PL/SQL-fråga IN kommaavgränsad sträng

En bindningsvariabel binder a värde, i det här fallet strängen '45,4932,20,19'. Du kan använda dynamisk SQL och sammanlänkning som föreslagits av Randy, men du måste vara mycket försiktig så att användaren inte kan ändra detta värde, annars har du problem med SQL Injection.

En säkrare väg skulle vara att lägga in ID:n i en Apex-samling i en PL/SQL-process:

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;

Ändra sedan din fråga till:

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


  1. MySql SELECT union för olika kolumner?

  2. Beräkna Max av summan av ett kommenterat fält över en grupperad efter fråga i Django ORM?

  3. 2 sätt att aktivera Word Wrap i SQLite

  4. Rangordning baserat på två kolumner