可以的,存储过程(Stored Procedure)是可以递归的,也就是说:一个存储过程在执行过程中可以调用自身。
不过需要注意几点(以常见数据库为例):
PROCEDURE 递归)大多数数据库对递归层数有上限,防止死循环拖垮系统。
例如:
MySQL:
SHOW VARIABLES LIKE 'max_sp_recursion_depth';
默认是 0(不允许递归),需要手动设置:
SET max_sp_recursion_depth = 10;
SQL Server:
受 @@NESTLEVEL 限制(最大 32 层)
DELIMITER $$
CREATE PROCEDURE recur_count(IN n INT)
BEGIN
IF n > 0 THEN
SELECT n;
CALL recur_count(n - 1);
END IF;
END$$
DELIMITER ;
CALL recur_count(5);
如果你告诉我你用的是哪种数据库(MySQL / Oracle / SQL Server / PostgreSQL),我可以给你更贴合的示例和限制说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。