Oracle
 sql >> Base de données >  >> RDS >> Oracle

Passer un nombre séparé par des virgules à la clause IN dans la procédure stockée

Le résultat final de ce que vous faites est le suivant :

select * from tableName where LOCATION_ID IN ('1,2,3');

Et voici ce dont vous avez besoin :

select * from tableName where LOCATION_ID IN (1,2,3);

Vous pouvez donc utiliser ceci :

select * from tableName where LOCATION_ID in (
    select regexp_substr(P_LOCATIONS,'[^,]+{1}',1,level)
    from dual connect by level <= length(regexp_replace(P_LOCATIONS,'[^,]*')) + 1
);



No