Estoy elaborando un programa para corredores de seguros en el cual necesitaba crear un reporte de morisidad de pagos por lo que necesitaba extraer de la base de datos los montos atrasados para 30 días, 60 días y más de 90 días.
Una de las forma de hacerlo es identificar cada póliza atrasada y llamar una función (stored function) que me devuelva el monto para cada periodo de días.
Este es el código para crear un función:
CREATE FUNCTION `saldo_30_dias`(par_poli_id INTEGER(11))
RETURNS decimal(10,2)
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ”
Begin
Declare saldo decimal(10,2);
select sum(pole_monto-pole_abono) into saldo
from polizas_letras a
where a.poli_id=par_poli_id
and pole_fecha_letra>=adddate(now(), interval -30 DAY)
and pole_fecha_letra<now()
and pole_estatus=0;
return saldo;
end;
Como pueden ver la función recibe un parámetro (par_poli_id) que es el código de la póliza.
Returna un valor decimal(10,2) que utilizó en el select
Ejecuto el select y el valor obtenido es insertado en saldo, utilizando la sentencia “into” que es la única diferencia de un select regular.
