Mysql存储函数返回错误值
CREATE FUNCTION cleanAmount(amount DECIMAL)
RETURNS decimal(30,2)
LANGUAGE SQL
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE res DECIMAL;
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END
SELECT cleanAmount('3.456');
返回3,00。它应该是3,46Mysql存储函数返回错误值
变化在存储过程中资源的宣告: -
CREATE FUNCTION cleanAmount(amount DECIMAL(60,30))
RETURNS decimal(30,2)
LANGUAGE SQL
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE res DECIMAL(30,2);
SET res=CAST(COALESCE(amount,0.00) AS DECIMAL(30,2));
RETURN res;
END
我已经尝试过,但没有更改。 'DECLARE res DECIMAL(30,2);' –
试着改变输入参数declare(当我测试它时,我也改变了它)。我现在编辑了我的答案以表明这一点。 – Kickstart
谢谢:)它的工作原理 –
缺省小数四舍五入可能你的号
DECLARE资源DECIMAL(30,2)
试试'ROUND'而不是'CAST'?例如:'ROUND(3.456.2)' – InSane
'SET res = ROUND(amount,2);'返回3,00。 'SELECT CAST(COALESCE(3.456,0.00)AS DECIMAL(30,2))'返回3.46:s –
即使将该行更改为SET res = amount;返回3.00 – Kickstart