Tengo este procedimiento y solo me ejecuta el primer update que esta despues del IF y obvia los demas. Por favor alguien me podria ayudar en que estoy fallando. Comente donde me sucede el inconveniente
DECLARE
v_nombre_cliente VARCHAR2(100);
v_rncTB VARCHAR2(40);
v_codigo_clienteTB VARCHAR2(10);
v_codigo_clienteTaveras VARCHAR2(10);
v_numero_prestamo VARCHAR2(15);
v_balance NUMBER(13,2);
v_rncTaveras VARCHAR2(40);
v_maxidprestamo venta.solicitud_prestamo.NUMERO_FACTURA%type;
CURSOR c_listaClientesTB
IS
SELECT c.nombre, c.rnc, c.cliente, t.numero_documento, SUM(t.balance) as balance
FROM venta.transacciones_condicion_pago t
JOIN venta.cliente c ON (c.cliente = t.cliente)
WHERE c.compania = t.compania
AND t.compania = 14
AND t.zona = 7
AND t.balance <> 0
AND c.rnc = '001-1647917-1'
GROUP BY c.nombre, c.rnc, c.cliente, t.numero_documento
ORDER BY c.nombre, t.numero_documento;
CURSOR c_listaClientesTaveras
IS
SELECT rnc, cliente
FROM venta.cliente
WHERE compania = 1
AND rnc = v_rncTB
AND ruta_cobro = 3;
BEGIN
FOR prestamos_vigentes IN c_listaClientesTB
LOOP
v_nombre_cliente := prestamos_vigentes.nombre;
v_rncTB := prestamos_vigentes.rnc;
v_codigo_clienteTB := prestamos_vigentes.cliente;
v_numero_prestamo := prestamos_vigentes.numero_documento;
v_balance := prestamos_vigentes.balance;
select max(NUMERO_FACTURA) into v_maxidprestamo
from venta.solicitud_prestamo
where compania = 1;
v_maxidprestamo := v_maxidprestamo + 1;
BEGIN
FOR rncTaveras IN c_listaClientesTaveras
LOOP
v_rncTaveras := rncTaveras.rnc;
v_codigo_clienteTaveras := rncTaveras.cliente;
IF (v_rncTaveras = v_rncTB) THEN
---Solo ejecuta este update---
update venta.solicitud_prestamo
set compania = 1, zona = 3, numero_solicitud = v_codigo_clienteTaveras, numero_factura = v_maxidprestamo
where COMPANIA = 14
AND CEDULA_SOLICITANTE = v_rncTB
and numero_factura = v_numero_prestamo;
---No ejecuta los update a partir desde aqui---
update venta.transacciones_condicion_pago
set compania = 1, zona = 3, cliente = v_codigo_clienteTaveras, numero_documento = v_maxidprestamo
where COMPANIA = 14
AND NUMERO_DOCUMENTO IN (v_numero_prestamo)
AND cliente = v_codigo_clienteTaveras;
update rebo.recibos_ingresos
set compania = 1, zona = 3, codigo = v_codigo_clienteTaveras, NO_PRESTAMO = v_maxidprestamo
where COMPANIA = 14
AND NO_PRESTAMO = v_numero_prestamo
AND codigo = v_codigo_clienteTaveras;
update rebo.comentarios
set compania = 1, documento = v_maxidprestamo, cuenta = v_codigo_clienteTaveras
where COMPANIA = 14
AND documento = v_numero_prestamo
AND cuenta = v_codigo_clienteTaveras;
dbms_output.put_line(v_nombre_cliente ||' - '|| v_numero_prestamo ||' - '|| v_maxidprestamo ||' - '|| v_codigo_clienteTaveras ||' - '|| v_codigo_clienteTB ||' - '||v_rncTB );
END IF;
END LOOP;
END;
END LOOP;
END;