1

作为查询,每次执行都会返回不同的值:

SELECT FLOOR(200000000000 + (RAND() * 100000000000))

编写一个功能相同的函数(从存储过程中调用):

DROP FUNCTION if exists setRandomNumber//
CREATE FUNCTION setRandomNumber()
RETURNS INT
BEGIN

 DECLARE rand INT DEFAULT 0;

 SELECT FLOOR(200000000000 + (RAND() * 100000000000)) INTO rand;

RETURN rand;
END//

总是产生相同的数字:

SELECT setRandomNumber();

产量:

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

等等。

这是一个错误吗?如何在函数或存储过程中迭代设置多个随机数?

4

2 回答 2

7

您正在最大化整数的限制 - 200000000000 太大了

于 2012-04-27T19:20:36.600 回答
2

您必须使用 BIGINT 而不是 INT 来返回值

于 2017-01-25T13:44:55.650 回答