Después de probar mucho... no funciona. Cuando intentas igualar una variable numerica a una variable de texto da el error ORA-01722: número no valido, cuando se ejecuta...
select d_usuario from tabla_personal where id_personal in ('12,56,58...')
aunque no pongas las comillas estás intentando igualar numerico con texto y casca, y si se combierte el id_personal a char tampoco funciona xq tiene que ser la cadena exactamente igual y no que contenga algo.
He estado probando de otra manera y lo he conseguido.
select d_usuario from tabla_personal where (',1,2,3,4,5,6,') like ('%,'||id_personal||',%')
* ',1,2,3,4,5,6,' es el valor que devuelve la función creada.
De esta manera estoy comprobando que una cadena existe en la otra, pongo una coma al principio y al final para que cuando busco por ejemplo el id 5434 no me muestre ni el 54, ni el 43, ni el 34, solo me mostrara el 5434 xq estoy comparando con
,5434,.
Es la única manera que he encontrado, es un poco rebuscada pero funciona.
Si con esto podemos ayudar a alquien que esté en la misma situación que la mía me alegro muchisimo.
Muchas gracias MACGREGOR por todo, me has ayudado mucho.
Un saludo.