Oracle - cursor, solo veo último registro desde java

   
Vista:

cursor, solo veo último registro desde java

Publicado por rubi michelle mramirez@metropolitana.com.mx (1 intervención) el 29/06/2011 22:39:38
Hola a todos, espero que alguien me pueda ayudar. Tengo un paquete, deseo obtener el resultado de un cursor x medio de java, lo raro esta en que si pinto el resultado, si veo los registros completos, sin embargo, al llamarlo desde java solamente veo el ultimo registro. Tal vez no debería llamarlo como lo hago, pResultado es de tipo SYS_REFCURSOR. Estoy segura que mi error es la parte que está resaltada en negrita, pero no sé como darle la instruccion correcta de tal manera que me arroje los registros completos y no solo uno.

Alguien puede ayudarme por favor? Gracias :)

El cursor es el siguiente:

PROCEDURE spS_Consulta_SolicitudesPago

(
pCveTransOrigen IN SEYCOS.ING_SOLIC_CHEQUE.CVE_TRANS_ORIGEN%TYPE,
pResultado OUT SYS_REFCURSOR
) AS

recIngSolicCheq SEYCOS.ING_SOLIC_CHEQUE%rowtype;
recIngSolicCheqD SEYCOS.ING_SOLIC_CHEQUE_D%rowtype;

-- :::::::::::::::::::::: CONSTANTES ::::::::::::::::::::::

cConcepto char(2) := '28';
cSubConcepto char(3) := '952';
cDanios char(5) := 'DAÑOS';

-- :::::::::::::::::::::: VARIABLES ::::::::::::::::::::::

vCodErr number := 0;
vDescErr varchar2(200) :='';
vIdSolChq SEYCOS.ING_SOLIC_CHEQUE.ID_SOL_CHEQUE%type;
vIdCuentaCont SEYCOS.ING_SOLIC_CHEQUE_D.ID_CUENTA_CONT%type;
vTotalSols number(6):= 0;

cursor curSolsPend is
SELECT ISC.ID_SOL_CHEQUE
FROM SEYCOS.ING_SOLIC_CHEQUE ISC
WHERE ISC.CVE_TRANS_ORIGEN = pCveTransOrigen
AND ISC.SIT_SOL_CHEQUE = 'P';

cursor curDetSols is
SELECT ISCD.ID_CUENTA_CONT
FROM SEYCOS.ING_SOLIC_CHEQUE_D ISCD
WHERE ISCD.ID_SOL_CHEQUE = vIdSolChq;


BEGIN

SELECT COUNT (*) INTO vTotalSols
FROM ING_SOLIC_CHEQUE ISC
WHERE ISC.CVE_TRANS_ORIGEN = pCveTransOrigen
AND ISC.SIT_SOL_CHEQUE = 'P';

IF ( vTotalSols > 0 ) THEN

open curSolsPend;
loop
fetch curSolsPend into vIdSolChq;
exit when curSolsPend%notfound;

--DBMS_OUTPUT.PUT_LINE ( ' vIdSolChq: ' || vIdSolChq);

open curDetSols;
loop
fetch curDetSols into vIdCuentaCont;
exit when curDetSols%notfound;

DBMS_OUTPUT.PUT_LINE ( ' vIdSolChq: ' || vIdSolChq||' ctaCont: ' ||
vIdCuentaCont );

OPEN pResultado FOR
SELECT vIdSolChq FROM DUAL;


end loop;
close curDetSols;

end loop;
close curSolsPend;


ELSIF( vTotalSols = 0 ) THEN
vDescErr := 'No hay solicitudes Pendientes';
DBMS_OUTPUT.PUT_LINE ( ' vDescErr: ' || vDescErr);

OPEN pResultado FOR SELECT vDescErr FROM DUAL;

END IF;

exception when others then
begin
vCodErr := SQLCODE;
vDescErr := SQLERRM;

DBMS_OUTPUT.PUT_LINE( 'Error: ' ||vCodErr ||' '||vDescErr);

end;

end spS_Consulta_SolicitudesPago;
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