作爲新工作的一部分,我正在爲以C#編碼的現有項目添加新功能。我的部分工作涉及更新位於SQL Server上的存儲過程。這個過程過去非常痛苦,因爲向存儲過程添加參數通常會導致站點的另一部分中斷,因爲對存儲過程參數列表的更改意味着對存儲過程的調用必須更新,寬。是否有任何理由不使用存儲過程中的可選參數?
,我發現這個問題的解決是使用選項參數,如:
CREATE PROCEDURE doSomething
( @Parameter1 NVARCHAR(50),
@NewParameter INT = 1
)
,使新的參數將有一個默認值設定,意思就是調用它不包括@ NewParameter不會拋出異常。對我來說,這似乎是一個明顯的解決方案,但我注意到沒有任何與此項目關聯的存儲過程具有任何可選參數。過去我也注意到,當我發現一個別人沒有使用的新的聰明編程技巧時,通常有一個原因。
那麼,是否有任何技術原因不使用存儲過程中的可選參數?它是否以某種方式傷害了表演?當可選參數可能導致未定義的行爲時,它們是兼容性問題還是實例?是否有任何危險或警告我應該知道?
使用默認值的參數只是一個修復,將來可能會咬你。可能這就是他們沒有使用它的原因。 – Habib