关于嵌套存储过程

时间:2012-03-02 07:23:05

标签: sql-server-2005 stored-procedures

使用嵌套存储过程(意味着在另一个存储过程中调用存储过程)是一个好习惯吗?在嵌套存储过程时是否应该遵循任何预防措施?是否允许有多少人可以在里面筑巢?

感谢您的期待

2 个答案:

答案 0 :(得分:4)

最大嵌套级别为32 Nesting Stored Procedures 在我看来,这样做的真正缺点是它很快就失控了SP依赖于另一个SP。风险在于您在一个SP中更改某个在另一个SP中具有无法预料效果的内容。一旦你咬了几次你就会在更改SP之前犹豫不决并考虑创建一个几乎完全相同的新东西,过了一段时间没有人知道为什么SP在那里或者它实际上是在使用。很容易弄得很乱。

答案 1 :(得分:3)

是的,嵌套水平有限制。来自manual

  

您可以将存储过程最多嵌套32个级别。

存在限制的事实可能暗示嵌套存储过程调用太多并不是一件好事。然而,最大的水平在我看来足够大,不用担心像5级左右那样嵌套调用。

事实上,我从来没有听说过在你的设计中嵌套调用引入了任何类型的缺点,我也没有遇到从彼此调用存储过程的任何实际缺点。相反,我认为,考虑服务器端代码可以使您的设计更加灵活。或者,如果不出意外,它至少允许您通过将较大的代码拆分为更中等大小(并且可能是逻辑上完整的)单元来使您的存储过程代码更易于管理。

我并不是说你应该总是试图不惜一切代价来考虑你的存储过程,如果你的设计更适合你的设计,我就不会觉得你必须嵌套你的程序。