Hi Janine,
I think the problem is with the function definition, not the way you are running it.
The definition of v_sql needs changing at the end:
where r.revision_id = test_func.revision_id';
should be:
where r.revision_id = ' || test_func.revision_id;
unless I'm very much mistaken (has been known! :D ).
You should be able to check it using your original method of selecting from dual (works on my Oracle 817 setup).
Hope that helps.
Raad