sql >> Base de Datos >  >> RDS >> Oracle

¿Funciones con valores de tabla en ORACLE 11g? (vistas parametrizadas)

No se necesita SYS_CONTEXT ni definiciones de cursor. Necesita un tipo para que, cuando se analice el SQL, pueda determinar qué columnas se devolverán. Dicho esto, puede escribir fácilmente un script que generará definiciones de tipo y tipo de colección. para una o más tablas basadas en los datos de user_tab_columns.

El más cercano es

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