jueves, 10 de noviembre de 2011

trigger resuelto segunda solemne

create or replace trigger trCuentaBancaria
after insert on giro
for each row
declare
vsaldoCuenta cuenta.saldo%type;
vsaldoLinea lineaCredito.saldo%type;
vIdLineaCredito lineaCredito.idLinea%type;
vLineaUsada integer;
begin
select saldo into vsaldoCuenta
where idCuenta = :new.idCuenta;
select saldo, idLinea into vsaldoLinea, vIdLineaCredito
from lineaCredito
where idCuenta = :new.idCuenta;
if :new.monto> vsaldoCuenta + vsaldoLinea then
dbms_output.put_line('Error No hay saldo suficiente disponible');
else if :new.monto <= vsaldoCuenta then
update cuenta
set Saldo = saldo - :new.monto
where idCuenta = :new.idCuenta;
else update cuenta
set Saldo = 0
where idCuenta = :new.idCuenta;
update lineaCredito
set saldo = saldo - vLineaUsada
where idCuenta = :new.idCuenta; vlineaUsada = vSaldoCuenta-vSaldoLinea;
insert into UsoLinea values(seqUsoLinea.nextval,vIdLineaCredito,sysdate,vlineausada)
end if;
end if;
end;

No hay comentarios:

Publicar un comentario