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

Pase un número separado por comas a la cláusula IN en el procedimiento almacenado

El resultado final de lo que estás haciendo es este:

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

Y lo que necesitas es esto:

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

Entonces puedes usar esto:

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