1

As a query, this returns different values each execution:

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

Writing a function which does the same (To be called from a stored procedure):

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//

Always yields the same number:

SELECT setRandomNumber();

yields:

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

setRandomNumber() 2147483647

And so on.

Is this a bug? How can I iteratively set more than one random number in a function or stored procedure?

4

2 に答える 2

7

整数の制限を超えています-200000000000が大きすぎます

于 2012-04-27T19:20:36.600 に答える
2

You have to use for your case BIGINT instead of INT for returning value

于 2017-01-25T13:44:55.650 に答える