天天看點

SQL 2000自定義函數調用GETDATE()報錯

在sql 2000資料庫裡的自定義函數中調用getdate()時,結果編譯時報錯,提示錯誤如下:invalid use of 'getdate' within a function

我給個測試例子如下所示,

如果你把getdate() 改成dbo.getdate()則編譯不會出錯,但是調用該函數時會報錯,錯誤提示如下所示:對象名   'dbo.getdate '

無效。

這是因為不允許在使用者定義函數主體中内置不确定函數(确定性函數和不确定性函數大家可以參考msdn文檔介紹)。在sql 2000裡面有

兩種解決方案:把getdate()函數作為自定義函數的參數傳入(如下所示)或定義獲得目前時間的視圖來解決這個問題。getdate()是不确

定函數。不過似乎在sql 2005裡面,自定義函數可以調用函數getdate(),如下所示,而且編譯、調用時都不會出錯。