Estoy tratando de hacer una tabla de amortización , el parámetro pide valores tipo texto.
Cree una tabla con la siguientes estructura
Id_clave descripción nombre_corto tasa
1 Mensual M 0.15
2 Semanal S 0.17
3 Quincenal Q 0.19
Código SQL:
Ver original
IF EXISTS ( SELECT * FROM sys.objects WHERE name = 'Amortizacion' ) DROP TABLE Amortizacion GO ALTER PROCEDURE tabla_amortizacion @prestamo DECIMAL (10,4) ,@periodo VARCHAR(150) --periodos 1 = mensual 2 = semanal 3= quincenal AS ---declaracion de variables IF EXISTS ( SELECT CAST(INT,nombre_cort) FROM Periodo WHERE nombre_cort = @periodo ) --SET @prestamo = CAST( @periodo AS INT) DECLARE @capital1 DECIMAL (10,4); DECLARE @interes1 FLOAT = 0; DECLARE @iva1 FLOAT = 0; DECLARE @contador FLOAT = 0 ,@capital_in FLOAT = 0 ,@p1 INT = 0 ,@p2 INT = 0 ,@pago DECIMAL (10,4); DECLARE @capital DECIMAL(10,4); DECLARE @interes FLOAT = 0; DECLARE @iva DECIMAL(10,4) ,@capital_in1 INT = 0 ,@pago1 DECIMAL(10,4) ,@saldo_inicial DECIMAL(10,4) ,@Cal_periodos FLOAT = 0; CREATE TABLE Amortizacion (Periodo SMALLINT ,Capital DECIMAL (10,4) ,Interes DECIMAL(10,4) ,Iva DECIMAL(10,4) ,Saldo_Inicial DECIMAL(10,4) ,Pago DECIMAL (10,4)); SET @capital = (@prestamo * .10) SET @interes = (@capital * .15) SET @iva = (@interes * .16) SET @capital_in = @prestamo SET @pago = @capital + @interes + @iva INSERT INTO Amortizacion VALUES (1, @capital, @interes, @iva, @capital_in, @pago) SET @saldo_inicial = @prestamo - @capital SET @Contador = 2 WHILE @Contador <= @Periodo BEGIN SET @capital1 = (@saldo_inicial * .10) SET @interes1 = (@capital1 * .15) SET @iva1 = (@interes1 * .16) SET @capital_in1 = @saldo_inicial SET @pago = @capital1 + @interes1 + @iva1 INSERT INTO Amortizacion VALUES (@contador, @capital1, @Interes1, @iva1, @capital_in1, @pago) SET @saldo_inicial = @saldo_inicial - @capital1 SET @Contador = @Contador + 1 END SELECT * FROM Amortizacion GO
Lo que trate de hacer es comparar los datos ingresados en los parámetros compararlos con la tabla creada ...alguna sugerencia ?