Mysql5.7自定義函數遞歸報錯1424 Recursive stored functions and triggers are not allowed


示例: 

DELIMITER $$
CREATE FUNCTION test(countnum INT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE tempnum INT DEFAULT 0;
IF countnum > 2 THEN
RETURN ROW_COUNT();
END IF;
SET countnum = countnum+1;
SELECT test(countnum) INTO tempnum;
END $$
DELIMITER ;


SELECT test(1);

當我調用自定義函數時會拋出 Recursive stored functions and triggers are not allowed(不允許遞歸存儲函數和觸發器。)

函數是不支持遞歸,但是可以用存儲過程遞歸

示例: 

DELIMITER $$
CREATE PROCEDURE test(countnum INT)
end_flag:
BEGIN
DECLARE tempnum INT DEFAULT 0;
IF countnum > 2 THEN
SELECT '滿足條件結束存儲過程';
LEAVE end_flag;
END IF;
SET countnum = countnum+1;
CALL test(countnum);
END $$
DELIMITER ;


CALL test(1);

執行存儲過程可能會拋出:

1456
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine test

max_sp_recursion_depth :遞歸調用的最大深度

可以執行:SET GLOBAL max_sp_recursion_depth =層級數;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM