Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/01/2013, 12:00
jc3000
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: retornar varias filas en un package

A ver, así a bote pronto ( tendría que probarlo en el curro ), veo dos fallos, uno el el PACKAGE y otro en el PACKAGE BODY.

En el package prueba esto :

Código SQL:
Ver original
  1. CREATE OR REPLACE PACKAGE pk_filas
  2.  
  3. IS
  4.  
  5.    TYPE numero IS record
  6.    (
  7.         CUENTA VARCHAR2(12)
  8.    );
  9.    
  10.    TYPE t_numero_cuentas IS TABLE OF numero;
  11.  
  12. var_t_numero t_numero_cuentas;
  13.  
  14.    FUNCTION fu_retorna_id(cedula VARCHAR2, prueba varchar2) RETURN numero;
  15.  
  16. END;
  17. /

Y en el body, prueba esto otro :

Código SQL:
Ver original
  1. CREATE OR REPLACE PACKAGE BODY pk_filas IS
  2.  
  3. FUNCTION fu_retorna_id(cedula VARCHAR2, prueba varchar2) RETURN numero IS
  4.    
  5. indice_tabla_pl NUMBER := 0;
  6.        
  7.    CURSOR c_prueba(p_cedula VARCHAR2, p_prueba varchar2) IS      
  8.        
  9.         SELECT  cuenta
  10.         FROM tabla1 t1, tabla2 t2
  11.         WHERE t1.cc= p_cedula
  12.         AND t2_kk=t1.kk
  13.         AND t1.es='1'
  14.         AND t2.clase=p_prueba;
  15.  
  16.       BEGIN
  17.        FOR r_c_t2 IN c_prueba(p_cedula,p_prueba) LOOP
  18.  
  19. indice_tabla_pl := indice_tabla_pl +1 ;
  20.  
  21. var_t_numero(indice_tabla_pl) := r_c_t2.cuenta;
  22.  
  23. END LOOP;
  24.  
  25. RETURN (var_t_numero);
  26.    END;
  27.  
  28. END;
  29. /

SI no te rula, dimelo y lo pruebo en el curro, pero creo que así te va a rular.