Không cần SYS_CONTEXT hoặc định nghĩa con trỏ. Bạn cần một kiểu để khi SQL được phân tích cú pháp, nó có thể xác định cột nào sẽ được trả về. cho một hoặc nhiều bảng dựa trên dữ liệu trong user_tab_columns.
Gần nhất là
create table my_table
(prodid number, a varchar2(1), b varchar2(1),
c varchar2(1), d varchar2(1), e varchar2(1));
create type my_tab_type is object
(prodid number, a varchar2(1), b varchar2(1),
c varchar2(1), d varchar2(1), e varchar2(1))
.
/
create type my_tab_type_coll is table of my_tab_type;
/
create or replace function get_some_data (p_val in number)
return my_tab_type_coll pipelined is
begin
FOR i in (select * from my_table where prodid=p_val) loop
pipe row(my_tab_type(i.prodid,i.a,i.b,i.c,i.d,i.e));
end loop;
return;
end;
/
SELECT * FROM table(get_Some_Data(3));