Código SQL
[-]
SET TERM ^ ;
CREATE PROCEDURE "REDONDEAR2"
("NUMERO" NUMERIC(14, 4))
RETURNS
("RESULTADO" NUMERIC(14, 2))
AS
DECLARE VARIABLE TEMPNUM FLOAT;
DECLARE VARIABLE SIGNO INTEGER;
DECLARE VARIABLE PARTE_ENTERA INTEGER;
BEGIN
NUMERO = NUMERO*1000;
PARTE_ENTERA = NUMERO;
TEMPNUM = MOD(PARTE_ENTERA,10);
SIGNO = 1;
IF (NUMERO < 0) THEN SIGNO = -1;
IF (ABS(TEMPNUM) >= 5) THEN
PARTE_ENTERA = (PARTE_ENTERA+(SIGNO*10));
RESULTADO = PARTE_ENTERA/10;
RESULTADO = RESULTADO/100;
SUSPEND;
END ^
SET TERM ; ^
COMMIT WORK;
Me parece que el procedimiento esta bastante claro. Solo cabe señalar que hace uso de dos funciones UDF : ABS y MOD. Que estan incluidas en la libreria ib_udf.dll que viene con interbase.
Aunque este procedimiento solo realiza el redondeo a dos decimales, se puede modifocar facilmente para que lo realiza a tantos decimales como se quiera.