Detalle del Problema Variable Cursor en un Procedimiento

Marcel
22 de Abril del 2004
Gracias por responder Guru, mira mi problema es que necesito recuperar información desde una tabla, para ello necesito usar un procedimiento

te muestro lo que hice

1.- cree un paquete en deonde defini mi tipo de dato cursor

package tipos_datos as
type cur_consulta is ref cursor;
end ;

2.- Luego cree un paquete y su cuerpo para definir al procedimiento

package consultas as
procedure sp_gen_c_formatoscheques (p_cursor in out tipos_datos.cur_consulta, vCod_Formato in char);
end ;

CREATE OR REPLACE package body gensys_consutas as
function gen_c_formatoscheques(vCod_Formato in char) return gensys_tipos_datos.cur_consulta is
v_cursor gensys_tipos_datos.cur_consulta;
procedure sp_gen_c_formatoscheques (p_cursor in out tipos_datos.cur_consulta, vCod_Formato in char) is
v_cursor tipos_datos.cur_consulta;
begin
open v_cursor for
select Cod_Formato
,Txt_Descripcion
from Mae_FormatosCheques
where Cod_Formato = vCod_Formato OR vCod_Formato ='';

p_cursor :=v_cursor;
end ;
end ;

3.- Y ejecuto el procedimiento

DECLARE
P_CURSOR tipos_datos.cur_consulta;
BEGIN
CONSULTAS.SP_GEN_C_FORMATOSCHEQUES ( P_CURSOR, '02' );
END;


Pero no veo los datos ¿Que Me Falta?

Gracias por tu ayuda!!

Ra?asc?
22 de Abril del 2004
La solucion es sencilla, solo debe tratar tu ref_cursor como un cursor, es decir, deberas incluir el siguiente codigo:
LOOP
FETCH v_cursor INTO v_cod, v_txt;
exit when v_cursor%notfound;
dbms_output.put_line (v_cod||v_txt);
END LOOP;
** Previamente define v_cod y v_txt como VARCHAR.

Un saludo.

set
22 de Abril del 2004
pregunta, te da algún erro, lo corres desde sqlplus o desde una forma.

Slds