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 originalSYSDATE > 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.