示例:
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 =層級數;