You can use the following subquery:
select regexp_substr('1,4,5,8,9,22,89','[^,]+', 1, level) from dual
connect by regexp_substr('1,4,5,8,9,22,89', '[^,]+', 1, level) is not null;
This splits the comma-separated list of values into a result set. Your procedure will look something like this:
PROCEDURE my_procedure ( p_my_list_of_numbers VARCHAR2)
BEGIN
SELECT * FROM my_table
WHERE ID IN (
select regexp_substr(p_my_list_of_numbers,'[^,]+', 1, level)
from dual
connect by regexp_substr(p_my_list_of_numbers, '[^,]+', 1, level) is not null);
END;
, , , .