Recién la veo a la SF que posteaste, @lastunikorn, y la verdad, es absurda...
 
¿Tienes claro que SYSDATE devuvelve 
la hora actual del servidor, no?
Eso implica que a menos que esos pl.data_inici_fase_X almacenen una fecha posterior a la del sistema 
al momento de la ejecución, jamás obtendrás un resultado coherente.
Además, como si fuera poco, hay al menos una condición 
completamente imposible:    
Código SQL:
Ver original- SYSDATE > pl.data_inici_fase_5 AND SYSDATE < pl.data_fi_fase_5 
Un valor no puede ser mayor y menor que otro 
al mismo tiempo. Eso no es lógico.
En esas condiciones, el valor 
96505 jamás será devuelto. 
Creo que deberías revisar la lógica de esa función, y además sería interesante ver una muestra de registros de la tabla, para verificar que no estés solapando rangos, ya que no estás planteando una selección excluyente, sino una cadena preseleccionada de opciones, que bien podrías resolver con DECODE(), en lugar de usar eso.