Ver Mensaje Individual
  #1  
Antiguo 06-08-2015
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Reputación: 14
novato_erick Va por buen camino
variable de Tipo Decimal envia error

Hola Chicos como estan nuevamente algo currioso con firebird:

estoy realizando un procedimiento que actualiza campos directamente con firebird

Código SQL [-]
CREATE PROCEDURE ACTUALIZAPRECIO(
  ID_ARTCOMPRA INTEGER,
  NEW_COMPRA DECIMAL(5, 2))
RETURNS(
  IDPRECIO INTEGER,
  IDART INTEGER,
  IDARTXIVA INTEGER,
  COMISION DECIMAL(12, 2),
  GASTOS DECIMAL(12, 2),
  MARGEN DECIMAL(12, 2),
  MARGENDETALLE DECIMAL(12, 2),
  PCOMPRAPRODUCTO DECIMAL(12, 2),
  MONTOIMPUESTO DECIMAL(12, 2),
  PRECIOCIV DECIMAL(12, 2),
  PRECIOSIV DECIMAL(12, 2))
AS
DECLARE VARIABLE IDPRECIOCOMPRA INTEGER;
DECLARE VARIABLE IDARCOMPRA INTEGER;
DECLARE VARIABLE IDARTXIMPUESTO INTEGER;
DECLARE VARIABLE COMISIONCOMPRA DECIMAL(12, 2);
DECLARE VARIABLE GASTOCOMPRA DECIMAL(12, 2);
DECLARE VARIABLE MARGENCOMPRA DECIMAL(12, 2);
DECLARE VARIABLE MARGENDETALLECOMPRA DECIMAL(12, 2);
DECLARE VARIABLE NEWPCOMPRA DECIMAL(12, 2);
DECLARE VARIABLE MONTOIVA DECIMAL(12, 2);
DECLARE VARIABLE NEW_PRECIOCIV DECIMAL(12, 2);
DECLARE VARIABLE NEW_PRECIOSIV DECIMAL(12, 2);
DECLARE VARIABLE OLDPCOMPRA DECIMAL(12, 2);
DECLARE VARIABLE IDIMPUESTO INTEGER;
DECLARE VARIABLE PORCENTAJEIVA DECIMAL(3, 2);
BEGIN
 FOR 
      SELECT 
         PRECIO.ID_PRECIO,
         PRECIO.ID_ARTICULO,
          PRECIO.ID_ARTXIMPUES,
         PRECIO.COEF_COMISION,
          PRECIO.COEF_GASTOS,
          precio.COEF_MARGEN,
          precio.COEF_MARGENDETALLE,
          precio.PRECIOCOMPRA,
          PRECIO.MONTO_IMPUESTO,
          PRECIO.PRECIO_CIV,
          PRECIO.PRECIO_SIV
            FROM
             PRECIO where precio.ID_ARTICULO = :ID_ARTCOMPRA
         INTO
         :IDPRECIO,
         :IDART,
         :IDARTXIVA,
         :COMISION,
         :GASTOS,
         :MARGEN,
         :MARGENDETALLE,
         :PCOMPRAPRODUCTO,
         :MONTOIMPUESTO,
         :PRECIOCIV,
         :PRECIOSIV  
                    
 DO

 BEGIN
  SELECT
  ARTXIMPUES.ID_IMPUESTO, IMPUESTO.PORCENTAJE
   FROM ARTXIMPUES, IMPUESTO 
   WHERE IMPUESTO.ID_IMPUESTO = ARTXIMPUES.ID_IMPUESTO AND
   ARTXIMPUES.ID_ARTXIMPUES = :IDARTXIVA 
   INTO :IDIMPUESTO, :PORCENTAJEIVA;
 
    COMISIONCOMPRA = 0.00;--aquí es donde tengo el problema que me envia: scale must be between zero and precision
    GASTOCOMPRA = 0.00;
    MARGENCOMPRA = 0.00;
    MARGENDETALLECOMPRA = 0.00;

  IF (PCOMPRAPRODUCTO < NEW_COMPRA) THEN
  BEGIN
    COMISIONCOMPRA = (NEW_COMPRA * COMISION)/100;
    GASTOCOMPRA = (NEW_COMPRA * GASTOS)/100;
    MARGENCOMPRA = (NEW_COMPRA * MARGEN)/100;
    MARGENDETALLECOMPRA = (NEW_COMPRA * MARGENDETALLE)/100;
  END  

 /* UPDATE 
  PRECIO  
  SET 
  PRECIOCOMPRA = :NEWPCOMPRA,
  PRECIO_CIV = :PRECIO_CIV,
  PRECIO_SIV = :PRECIO_SIV,
  MONTOSUMAFIJA = :MONTOSUMAFIJA,
  MONTO_IMPUESTO = :MONTO_IMPUESTO,
  COEF_COMISION = :COEF_COMISION,
  COEF_GASTOS = :COEF_GASTOS,
  COEF_MARGEN = :COEF_MARGEN,
  COEF_MARGENDETALLE = :COEF_MARGENDETALLE
 
WHERE 
  ID_PRECIO = :ID_PRECIO */
  
   

 END
SUSPEND; 
END;

en fin como mencione en el código con un comentario me manda ese error.


Saludos
Responder Con Cita