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
END
SUSPEND;
END;
en fin como mencione en el código con un comentario me manda ese error.
Saludos