1

我有一個SQL函數,它有3個參數。第三個參數的默認值爲NULL。然而,我不能只是寫:SQL函數和默認值

dbo.myFunction(Param1, Param2) 

我得到的錯誤:

An insufficient number of arguments were supplied for the procedure or function dbo.myFunction. 

所以我必須寫:

dbo.myFunction(Param1, Param2, NULL) 
dbo.myFunction(Param1, Param2, default) 

有沒有一種方法,我可以只寫dbo.myFunction(Param1, Param2) ?我想這是很多清潔劑(和節省了我不必修改,我已經添加了一個新的參數去現有的功能!)

回答

3

他們默認參數,而不是可選參數&必須始終傳遞在具有值或default的呼叫中。

如果你想,你可以讓你的現有dbo.myFunction(Param1, Param2)通話dbo.myFunctionEx(Param1, Param2, default)

+0

有反正有一個可選的參數?如果一個新的參數被添加到現有的UDF中,那麼現有調用該函數的標準協議是什麼?只需通過它們並添加「默認」? – Curt

+1

如果你調用一個函數的參數太少或者太多,你會得到一個錯誤,所以你必須修改現有的調用來包含默認值或者用不同的名字創建修改後的proc –

+0

謝謝Alex,你知道背後的原因嗎這個?對我來說,似乎沒有任何理由說明爲什麼默認不能只是在沒有輸入的情況下才被假定。 – Curt