在mysql中写函数时,不会出现这个错误,即编译通过,但是在执行的时候,只要执行如下中的if ,则会报错Recursive stored functions and triggers are not allowed.
/*生成一个比parNum小的随机数*/
DELIMITER $$
CREATE FUNCTION `fun_pro_random_num`(parNum INT)
RETURNS INT
BEGIN
DECLARE tmp INT DEFAULT FLOOR(RAND()*parNum);
IF tmp=0 THEN
RETURN fun_pro_random_num(parNum);
ELSE
RETURN tmp;
END IF;
END$$
DELIMITER ;
百度一翻,原来是mysql中函数不支持递归调用,仅仅在存储过程中支持。