Answers:
这就像重载方法。本质上,您可以创建两个或多个版本的存储过程,每个版本执行不同的操作-接受不同数量的参数,对不同的表进行操作,具有不同的输出,等等。
它们被称为编号过程,并且绝对不推荐使用(自2005年以来宣布)。SQL Server 2012仍支持它们,但是某些功能不能很好地使用它们。例如,在“包含的数据库”中将它们视为包含违反行为,并且不会创建任何编号大于1的过程:
消息12829,级别16,状态1,过程blat,第1行
存储过程'dbo.blat'指一组编号的存储过程。编号的存储过程在包含的数据库中不可用。请查阅联机丛书主题“了解包含的数据库”以获取有关包含的数据库的更多信息。
对存储过程进行分组的能力(不建议使用)似乎是出于单个(且很愚蠢)的目的而存在:通过单个DROP
语句进行批量删除的能力。根据用于创建存储过程的SQL Server 2000 MSDN文档:
分组
如果为过程指定了不同的标识号,则可以使用与现有存储过程相同的名称来创建该过程,从而可以对这些过程进行逻辑分组。具有相同名称的分组过程允许同时删除它们。在同一应用程序中使用的过程通常以这种方式进行分组。例如,与my_app应用程序一起使用的过程可能名为my_proc; 1,my_proc; 2,依此类推。删除my_proc会删除整个组。将过程分组后,无法删除该组中的各个过程。
假设使用相同的基本名称甚至都不允许过载(签名不必是唯一的,并且不需要自动执行路由到特定的“数字”),使用此构造没有任何其他好处。因此,您仍然需要执行时使用“数字”。因此,确定“傻”(对此可能太好了;-)。