А планируется ли сделать что-то наподобие курсорных переменных?
Ну, к примеру

...

declare F1 cursor(X1: integer) for (select name from T where id=:X1);
declare F2 cursor for (select name from T);
declare RF refcursor;

...


if (inpar is null) then
  RF = F1(inpar)
  else
   RF = F2();

RF.Open
...

Ответить