Oracle
 sql >> Database >  >> RDS >> Oracle

Funzioni con valori di tabella in ORACLE 11g ? ( viste parametrizzate )

Non c'è bisogno di SYS_CONTEXT o definizioni del cursore. Hai bisogno di un tipo in modo che, quando l'SQL viene analizzato, possa determinare quali colonne verranno restituite. Detto questo, puoi facilmente scrivere uno script che genererà definizioni di tipo e tipo di raccolta per una o più tabelle in base ai dati in user_tab_columns.

Il più vicino è

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));