Pessoal acho que descobri o motivo. Eu estava enviando um comando para reiniciar o componente sempre que o banco era trocado, assim o atributo em questão voltava ao valor padrão que é vazio.
Precisei do código também para MySQL e fiz a conversão, então, segue abaixo:
CREATE FUNCTION ROUND_ABNT(nValor real, nDecimais int) RETURNS real
BEGIN
DECLARE nRetorno real;
DECLARE cDecimais char(100);
DECLARE nSubsequente int;
SET nRetorno = nValor;
SET cDecimais = SUBSTRING(CONVERTE(nValor),INSTR(CONVERTE(nValor),'.')+1);
SET nSubsequente = nDecimais+1;
IF (nDecimais<1) THEN
RETURN TRUNCATE(nRetorno,0);
END IF;
IF (LENGTH(cDecimais) <= nDecimais) THEN
RETURN nRetorno;
END IF;
IF (SUBSTRING(cDecimais,nSubsequente,1)>'5' OR SUBSTRING(cDecimais,nSubsequente,1)<'5') THEN
SET nRetorno = ROUND(nValor,nDecimais);
ELSEIF (SUBSTRING(cDecimais,nSubsequente,1)='5') THEN
IF (MOD(SUBSTRING(cDecimais,nDecimais,1),2) <> 0) THEN
SET nRetorno = ROUND(nValor,nDecimais);
ELSE
IF (SUBSTRING(cDecimais,nSubsequente+1,1) > 0) THEN
SET nRetorno = ROUND(nValor,nDecimais);
ELSE
SET nRetorno = TRUNCATE(nValor,nDecimais);
END IF;
END IF;
END IF;
RETURN nRetorno;
END;
Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.