Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2015, 17:59
lesslek
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
pasar un parámetro tipo Varchar a tipo numérico en un procedimiento almacenado

Hola buenas tardes !

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
  1. IF EXISTS ( SELECT      *
  2.  
  3.                   FROM  sys.objects
  4.  
  5.                   WHERE name = 'Amortizacion' )
  6.  
  7.    DROP TABLE Amortizacion
  8.  
  9.  
  10.  
  11. GO
  12.  
  13.  
  14.  
  15. ALTER  PROCEDURE tabla_amortizacion
  16.  
  17.         @prestamo DECIMAL (10,4)
  18.  
  19.       ,@periodo VARCHAR(150)
  20.  
  21.  
  22.  
  23. --periodos 1 = mensual 2 =  semanal 3= quincenal
  24.  
  25. AS ---declaracion de variables
  26.  IF EXISTS ( SELECT  CAST(INT,nombre_cort)
  27.                               FROM      Periodo
  28.                               WHERE     nombre_cort = @periodo )
  29.  
  30. --SET @prestamo = CAST( @periodo  AS INT)
  31.  
  32.         DECLARE @capital1 DECIMAL (10,4);
  33.  
  34.         DECLARE @interes1 FLOAT = 0;
  35.  
  36.         DECLARE @iva1 FLOAT = 0;
  37.  
  38.         DECLARE @contador FLOAT = 0
  39.  
  40.                   ,@capital_in FLOAT = 0
  41.  
  42.                   ,@p1 INT = 0
  43.  
  44.                   ,@p2 INT = 0
  45.  
  46.                   ,@pago DECIMAL (10,4);
  47.  
  48.         DECLARE @capital DECIMAL(10,4);
  49.  
  50.         DECLARE @interes FLOAT = 0;
  51.  
  52.         DECLARE @iva DECIMAL(10,4)
  53.  
  54.                    ,@capital_in1 INT = 0
  55.  
  56.                   ,@pago1 DECIMAL(10,4)
  57.  
  58.                   ,@saldo_inicial DECIMAL(10,4)
  59.  
  60.                   ,@Cal_periodos FLOAT = 0;
  61.  
  62.  
  63.  
  64.                                  
  65.  
  66.         CREATE  TABLE Amortizacion (Periodo SMALLINT
  67.  
  68.                                                ,Capital DECIMAL (10,4)
  69.  
  70.                                                ,Interes DECIMAL(10,4)
  71.  
  72.                                                ,Iva DECIMAL(10,4)
  73.  
  74.                                                ,Saldo_Inicial DECIMAL(10,4)
  75.  
  76.                                                ,Pago DECIMAL (10,4));
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.         SET @capital = (@prestamo * .10)
  85.  
  86.         SET @interes = (@capital * .15)
  87.  
  88.         SET @iva = (@interes * .16)
  89.  
  90.         SET @capital_in = @prestamo
  91.  
  92.         SET @pago = @capital + @interes + @iva
  93.  
  94.         INSERT    INTO Amortizacion
  95.  
  96.         VALUES    (1, @capital, @interes, @iva, @capital_in, @pago)
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.         SET @saldo_inicial = @prestamo - @capital
  105.  
  106.  
  107.  
  108.                      
  109.  
  110.         SET @Contador = 2
  111.  
  112.         WHILE @Contador <= @Periodo
  113.  
  114.                   BEGIN
  115.  
  116.  
  117.  
  118.                                
  119.  
  120.                           SET @capital1 = (@saldo_inicial * .10)
  121.  
  122.                           SET @interes1 = (@capital1 * .15)
  123.  
  124.                           SET @iva1 = (@interes1 * .16)
  125.  
  126.                           SET @capital_in1 = @saldo_inicial
  127.  
  128.                           SET @pago = @capital1 + @interes1 + @iva1
  129.  
  130.                           INSERT    INTO Amortizacion
  131.  
  132.                           VALUES    (@contador, @capital1, @Interes1, @iva1, @capital_in1, @pago)
  133.  
  134.  
  135.  
  136.                           SET @saldo_inicial = @saldo_inicial - @capital1
  137.  
  138.  
  139.  
  140.                      
  141.  
  142.                           SET @Contador = @Contador + 1
  143.  
  144.  
  145.  
  146.          
  147.  
  148.  
  149.  
  150.                   END
  151.  
  152.      
  153.  
  154.  
  155.  
  156.         SELECT    *
  157.  
  158.         FROM            Amortizacion
  159.  
  160.  
  161.  
  162. GO

Lo que trate de hacer es comparar los datos ingresados en los parámetros compararlos con la tabla creada ...alguna sugerencia ?

Última edición por gnzsoloyo; 19/07/2015 a las 18:15 Razón: Código sin etiquetar...