Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Passe o número separado por vírgula para a cláusula IN no procedimento armazenado


O resultado final do que você está fazendo é este:
select * from tableName where LOCATION_ID IN ('1,2,3');

E o que você precisa é isso:
select * from tableName where LOCATION_ID IN (1,2,3);

Então você pode usar isso:
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