【发布时间】:2014-09-29 16:11:51
【问题描述】:
我正在 MySQL 中处理一个用户定义的函数,它接受一个整数 (mediumint) 并将其除以 100(即 10785 / 100 = 107.85)。提供的整数是一个称为时间的参数。我试过了
DECLARE dtime FLOAT;
SET dtime = time / 100;
DECLARE ftime VARCHAR(10);
这会导致错误,我假设是因为我将两个整数相除并将其分配给浮点数
MySQL said: #1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'DECLARE ftime VARCHAR(10);
我也试过了
SET dtime = CAST(time as FLOAT) / 100.0;
但这会引发错误,因为您似乎无法将数字转换为浮点数。最后,我尝试使用小数
DECLARE dtime DECIMAL(10,10);
SET dtime = CAST(time AS decimal(10,10)) / CAST(100 as decimal(10,10);
DECLARE ftime VARCHAR(10);
但会引发相同的错误 (near 'Declare ftime...)。实现此目的的正确方法是什么?
【问题讨论】:
-
除了我不需要双精度之外没有其他原因。
-
简单猜测:尝试将所有
declare语句移动到函数/过程的开头,以及declares 之后的任何其他指令(包括set语句)。在下面阅读我的答案
标签: mysql floating-point user-defined-functions integer-division