Oracle - Procedimiento que devuelve un cursor

 
Vista:

Procedimiento que devuelve un cursor

Publicado por Martin (1 intervención) el 05/07/2006 18:25:16
Hola a todos.
Hice el siguiente procedimiento que me devuelve un corsor. El tema es que necesito modificar un dato. Me da un error de NO DATA FOUND pero es imposible ya que los datos existen.

Si alguien me da una mano le voy a agradecer un monton. Saludos

el codigo del proc es el sigiente:

CREATE OR REPLACE PROCEDURE CONTA.sp_BrowAgrupamientoOPxEE (
wID_EXPEDIENTE_DE_EGRESO NUMBER,
wID_ORDEN_PAGO NUMBER,
rCurBrowAOP_EE IN OUT WBrowAgrupamientoOPxEE.WCurBrowAgrupamientoOPxEE
)
AS

CURSOR CurBrowAOP_EE
IS
SELECT A.ID_AGRUPAMIENTO AS PK_ID_AGRUPAMIENTO,
AX.ID_EXPEDIENTE_DE_EGRESOS AS PK_ID_EXPEDIENTE_DE_EGRESOS,
NVL (AX.IMP_EXP_EGRESO, 0)
+ NVL (AX.IMP_AJUSTES, 0)
- NVL (AX.IMP_PENDIENTE_PAGO, 0)
- NVL (AX.IMP_PAGADO, 0) AS PK_MAX,
A.DESC_AGRUPAMIENTO AS AGRUPAMIENTO, 0 AS IMPORTE,
NVL (AX.IMP_EXP_EGRESO, 0)
+ NVL (AX.IMP_AJUSTES, 0)
- NVL (AX.IMP_PENDIENTE_PAGO, 0)
- NVL (AX.IMP_PAGADO, 0) AS SALDO_AGRUP
FROM CODIGOS_DE_AGRUPAMIENTO A, COD_AGRUP_EXP_DE_EGRESOS AX
WHERE A.ID_AGRUPAMIENTO = AX.COD_AGRUP
AND AX.ID_EXPEDIENTE_DE_EGRESOS = wID_EXPEDIENTE_DE_EGRESO;

nIMP_A_PAGAR NUMBER;

BEGIN
FOR rCurBrowAOP_EE IN CurBrowAOP_EE
LOOP
BEGIN
SELECT IMP_A_PAGAR
INTO nIMP_A_PAGAR
FROM COD_AGRUP_ORDENES_DE_PAGO
WHERE ID_ORDENES_DE_PAGO = wID_ORDEN_PAGO
AND ID_AGRUPAMIENTO = rCurBrowAOP_EE.PK_ID_AGRUPAMIENTO;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
nIMP_A_PAGAR := 0;
END;

rCurBrowAOP_EE.PK_MAX := rCurBrowAOP_EE.PK_MAX - nIMP_A_PAGAR;
rCurBrowAOP_EE.SALDO_AGRUP := rCurBrowAOP_EE.SALDO_AGRUP - nIMP_A_PAGAR;
END LOOP;
END;
/
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