作为新工作的一部分,我正在为以C#编码的现有项目添加新功能。我的部分工作涉及更新位于SQL Server上的存储过程。这个过程过去非常痛苦,因为向存储过程添加参数通常会导致站点的另一部分中断,因为对存储过程参数列表的更改意味着对存储过程的调用必须更新,宽。是否有任何理由不使用存储过程中的可选参数?
,我发现这个问题的解决是使用选项参数,如:
CREATE PROCEDURE doSomething
( @Parameter1 NVARCHAR(50),
@NewParameter INT = 1
)
,使新的参数将有一个默认值设定,意思就是调用它不包括@ NewParameter不会抛出异常。对我来说,这似乎是一个明显的解决方案,但我注意到没有任何与此项目关联的存储过程具有任何可选参数。过去我也注意到,当我发现一个别人没有使用的新的聪明编程技巧时,通常有一个原因。
那么,是否有任何技术原因不使用存储过程中的可选参数?它是否以某种方式伤害了表演?当可选参数可能导致未定义的行为时,它们是兼容性问题还是实例?是否有任何危险或警告我应该知道?
使用默认值的参数只是一个修复,将来可能会咬你。可能这就是他们没有使用它的原因。 – Habib