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
- Printer-friendly version
- Log in to post comments
Creo que lo que te falta es
Submitted by Carlos on Thu, 03/04/2010 - 13:38
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.
hola carlos, ayer justamente
Submitted by Anonimo (not verified) on Thu, 03/04/2010 - 14:06
In reply to Creo que lo que te falta es 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
Habría que ver el código del
Submitted by Carlos on Thu, 03/04/2010 - 14:26
In reply to hola carlos, ayer justamente 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.
ok carlos voy a buscarlo,
Submitted by gilson on Thu, 03/04/2010 - 14:59
In reply to Habría que ver el código del by Carlos
ok carlos voy a buscarlo, agradezco mucho tu ayuda, saludos
lo raro es que uso el mismo raiserror para un procedimiento que inserta personas y no tengo ningun problema con ese procedure