Problema con funcion escalar

 buen dia a todos, tengo un problema con una funcion escalar, lo que quiero es que me devuelva un tipo de dato money pero al ejecutar la funcion me retorna 0.00, y no se por que esta sucediendo eso 

aqui les dejo la codificacion de la funcion

USE [sisfinan]
GO
/****** Object:  UserDefinedFunction [dbo].[obtener_total_interes_sistema_aleman]    Script Date: 03/02/2010 00:00:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function [dbo].[obtener_total_interes_sistema_aleman]
              (
               @deuda money,
       @plazo smallint,
       @tasa real,
      )
returns money
as
begin
declare @monto_interes money,@id_cuota smallint, @total_interes money
select @id_cuota = 1;
while @id_cuota <= @plazo
begin
select @monto_interes  = @monto_interes + @deuda *(@tasa/100),
    @total_interes  = @total_interes + @monto_interes,
@deuda  = @deuda - @capital
        select @id_cuota = @id_cuota +1;          
end;
return isnull(@total_interes,0);

muchas gracias por su ayuda

saludos

 

 

 

 

 

Creo que lo que te falta es inicializar las variables que utilizas en los cálculos. Seguramente intervienen en las operaciones con valor nulo, y por eso el resultado también es nulo.

Asígnale valor inicial 0 a monto_interes y a total_interes, y asegúrate de que deuda se pasa también con un valor definido.

In reply to by Carlos

 hola carlos, ayer justamente inicialize las variables y me funciona perfectamente, muchas gracias por tu ayuda, ahora tengo 

otro pequeño problema, al ejecutar un procedimiento me sale este error  Mens 2732, Nivel 16, Estado 1, Procedimiento

sp_ins_propuesta, Línea 449 El número de error 8134 no es válido. El número debe estar comprendido entre 13000 y 2147483647 y no puede ser 50000., 

a que se debera este error por que todos los errores capturo con raiserror('mensaje',16,1)

muchisimas gracias por tu ayuda

saludos

 

 

 

In reply to by Anonimo (not verified)

Habría que ver el código del PROCEDURE, pero en algún lugar se tiene que estar asignando el número 8.134 como código de error. Puede que sea en alguna función o procedure a los que llame el principal.
Deberías poder encontrarlo y cambiar ese número por uno mayor que 13.000.