SQL SERVER 存储过程的天然递归

本文通过一次意外的递归调用经历,揭示了在编写或修改SQL存储过程时可能遇到的问题。作者尝试在存储过程末尾直接执行该过程,却因误操作导致无限递归,最终系统因过多递归调用而自动退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有几次,我编写或修改存储过程的时候,为图方便,在末尾随手写上 执行这个存储过程 的语句,比如


ALTER PROCEDURE prd_GetData
	@Top INT = 10;
AS
	SELECT * FROM [dbo].Table1  ORDER BY ID DESC;
END

EXEC [dbo].prd_GetData

本来应该用鼠标选定最后一行,指定它来执行,但一时手颤,没有选上就按下运行,结果出来好多个结果,最后系统警告太多层了,SQL自动退出。


究其原因,是系统将 

EXEC [dbo].prd_GetData

这句也当成了存储过程本身的一个语句,形成递归,因此无限循环了。

存储过程天然归 

调足一百八十龟

转载于:https://www.cnblogs.com/leftfist/archive/2012/10/24/4258042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值