My answer is not correct, sorry for that.
so I will keep answering from here.
problem is DBMS_OUTPUT is an plsql object and require a plsql block complete to flush. run this after your select statement:
exec dbms_output.put_line('look above!');
probably you saw your function output right?
check the documentation: https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_output.htm#i1000105
at the bottom:
Output that you create using
PUT_LINEis buffered. The output cannot be retrieved until the PL/SQL program unit from which it was buffered returns to its caller.
so there should be a plsql unit completion.
ok, so it looks like I am out of luck on this one.
It would have been nice to have a longer running function be able to post informational messages as it processes. (...such as a progress notification)
I was just posting a reply. I must correct myself that this is not related with dbms_output. other development tools shows the result. as Gary has the correct answer.
sorry for pointing the wrong way.