我必须处理的最令人困惑的问题之一与存储过程组有关.给定一个存储过程usp_DoSomethingAwesome,我可以通过调用usp_DoSomethingAwesome来创建另一个组中的proc; 2.
我在解决一些系统生成的插入,更新和删除复制存储过程引起的一些复制问题(发布者:sql 2000 Ent.,Dist / Sub:2008 R2 Ent.)时发现了这一点.
拥有这种“分组”能力背后的目的/想法是什么?
解决方法
这就像重载方法一样.基本上,您可以创建两个或更多版本的存储过程,每个版本执行不同的操作 – 获取不同数量的参数,在不同的表上操作,具有不同的输出等.
它们被称为Numbered Procedures,它们绝对被弃用(announced since 2005). sql Server 2012仍然支持它们,但某些功能与它们不能很好地配合使用.例如,它们被认为是包含数据库中的包含违规,并且任何编号为>的程序. 1将不会被创建:
Msg 12829,Level 16,State 1,Procedure blat,Line 1 The stored procedure ‘dbo.blat’ refers to a group of numbered stored procedures. Numbered stored procedures are not available in contained databases. Please consult the Books Online topic Understanding Contained Databases for more information on contained databases.