Oracle - vPL/SQL retornar una tabla de un funcion

 
Vista:

vPL/SQL retornar una tabla de un funcion

Publicado por Roberto (1 intervención) el 13/12/2010 14:16:34
Hola tengo el siguiente paquete que me retorna una tabla, pero no se como puedo coger esta tabla cuando llamo a la función. Retorno una tabla porque necesito retornar varios valores y no se me ocurre otra forma de almacenarlos, el caso esque la tabla se puede retornar pero no tengo ni idea de como recogerla. Gracias. Un saludo.

CREATE OR REPLACE PACKAGE Paquete_Tiempo_corredores AS

TYPE tipoTiemposMedios IS RECORD(

codcorredor Clasificacion_etapa.cod_corredor%TYPE,

tiempo_medio Clasificacion_etapa.tiempo%TYPE);


TYPE tabla_TiemposMedios IS TABLE OF tipoTiemposMedios

INDEX BY BINARY_INTEGER;

FUNCTION Tiempo_medio_corredor(

Parametro1 Participantes.cod_equipo%TYPE,

Parametro2 Participantes.temporada%TYPE)

RETURN tabla_TiemposMedios;

END Paquete_Tiempo_corredores;

/

CREATE OR REPLACE PACKAGE BODY Paquete_Tiempo_corredores

AS

FUNCTION Tiempo_medio_corredor(

Parametro1 Participantes.cod_equipo%TYPE,

Parametro2 Participantes.temporada%TYPE)

RETURN tabla_TiemposMedios IS


CURSOR C_CorredoresEquipo IS

SELECT cod_corredor

FROM Participantes

WHERE (cod_equipo=Parametro1)AND(temporada=Parametro2);


v_TiemposMedios tipoTiemposMedios;

v_tabla_TiemposMedios tabla_TiemposMedios;

tiempo_parcial Clasificacion_etapa.tiempo%TYPE;

n_etapas Clasificacion_etapa.numero_etapa%TYPE;

k INTEGER:=1;


BEGIN

SELECT MAX(numero_etapa) INTO n_etapas

FROM Clasificacion_etapa

WHERE temporada=Parametro2;


FOR v_participantes IN C_CorredoresEquipo LOOP

tiempo_parcial:=Tiempo_total_corredor(v_participan tes.cod_corredor, Parametro2);

v_TiemposMedios.tiempo_medio:=tiempo_parcial/n_etapas;

v_TiemposMedios.codcorredor:=v_participantes.cod_c orredor;


v_tabla_TiemposMedios(k):=v_TiemposMedios;

k:=k+1;

END LOOP;


RETURN v_tabla_TiemposMedios;


END Tiempo_medio_corredor;

END Paquete_Tiempo_corredores;

/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:vPL/SQL retornar una tabla de un funcion

Publicado por karmona (1 intervención) el 18/01/2011 22:20:53
prueba:

SELECT * FROM TABLE(<nombre de la funcion>);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar