There's no
function type in Oracle. In such cases I use string parameter with function schema, package, name, parameters, etc. and execute it with
EXECUTE IMMEDIATE statement. It's possible to to use parameter masks eg.
$parm and next replace it with parameter value:
stmt:=replace(stmt,'$parm','''value''');
I use very complicated code like this, it works fast, and reliable (remember, that, for instance
$,
. or
' signs are keywords in pattern above).
Maybe, it's possible to use object types with methods in Your case, but I didn't do it.
Using SYS_REFCURSOR works ok in local database, but very slow through database links. Next, it's hard to find cursor result fields.