作为查询,每次执行都会返回不同的值:
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
等等。
这是一个错误吗?如何在函数或存储过程中迭代设置多个随机数?
答案 0 :(得分:6)
你最大限度地超出整数限制 - 200000000000太大
答案 1 :(得分:1)
您必须使用BIGINT而不是INT来返回值