oracle - Tail call for pipelined functions -
i have pipelined function:
create type my_tab_type table of ... create function my_func (x in number) return my_tab_type pipelined begin loop ... pipe row (...); end loop; return; end; now want create pipelined function my_func_zero same my_func fixed value of parameter: my_func_zero must equivalent my_func(0).
can implement my_func_zero without senseless , boring loop processing every row returned select * table(my_func(0))?
p.s. that thread bit similar, not contain answer question.
it's possible, if don't declare second function pipelined because functions of type return results on row-by-row basis.
if omit requirement can reach target bulk collect if need typed cursor:
create function my_zero_func return my_tab_type res_table my_tab_type; begin select my_type(field1, field2) bulk collect res_table table(my_func(0)); return res_table; end; alternatively can use untyped cursor:
create function my_ref_zero_func return sys_refcursor vres sys_refcursor; begin open vres select * table(my_func(0)); return vres; end; in client application my_ref_zero_func results may used without changes, in sqlfiddle converted xml representation because there no way demonstrate ref cursor tool.
Comments
Post a Comment