Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql存储函数返回错误的值_Mysql_Decimal_Stored Functions - Fatal编程技术网

Mysql存储函数返回错误的值

Mysql存储函数返回错误的值,mysql,decimal,stored-functions,Mysql,Decimal,Stored Functions,选择cleanAmount('3.456')返回3,00。它应该是3,46默认的小数点可能是四舍五入的数字 DECLARE res DECIMAL(30,2)默认小数点可能是四舍五入数字 DECLARE res DECIMAL(30,2)更改存储过程中res的声明:- CREATE FUNCTION cleanAmount(amount DECIMAL) RETURNS decimal(30,2) LANGUAGE SQL DETERMINISTIC NO SQL

选择cleanAmount('3.456')返回3,00。它应该是3,46

默认的小数点可能是四舍五入的数字


DECLARE res DECIMAL(30,2)

默认小数点可能是四舍五入数字


DECLARE res DECIMAL(30,2)

更改存储过程中res的声明:-

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

更改存储过程中res的声明:-

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

尝试
ROUND
而不是
CAST
?例如:
ROUND(3.456,2)
SET res=ROUND(amount,2)返回3,00<代码>选择强制转换(合并(3.456,0.00)为十进制(30,2))
返回3.46:sEven更改该行以设置res=金额;返回3.00Try
ROUND
而不是
CAST
?例如:
ROUND(3.456,2)
SET res=ROUND(amount,2)返回3,00<代码>选择强制转换(合并(3.456,0.00)为十进制(30,2))返回3.46:sEven更改该行以设置res=金额;返回3.00I已尝试但未更改<代码>声明十进制(30,2)尝试更改输入参数declare(我在测试时也更改了它)。我现在编辑了我的答案以显示这一点。我已经尝试过,但没有改变<代码>声明十进制(30,2)尝试更改输入参数declare(我在测试时也更改了它)。我现在编辑了我的答案以显示这一点。