sql >> Base de Datos >  >> RDS >> Oracle

Consulta PL/SQL EN cadena delimitada por comas

Una variable de vinculación vincula a valor, en este caso la cadena '45,4932,20,19'. Puede usar SQL dinámico y concatenación como lo sugiere Randy, pero debe tener mucho cuidado de que el usuario no pueda modificar este valor, de lo contrario, tiene un problema de inyección de SQL.

Una ruta más segura sería colocar los ID en una colección de Apex en un proceso 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;

Luego cambie su consulta a:

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