SQL Server 2005-如何在SQL Server用戶自訂函數中調用GetDate()函數
您可以在SQL Server 2005的使用者自訂函數(UDFs:User Defined Functions)中呼叫使用GetDate() 函數,下列這個范例程序即是一例:
-- 建立一個 UDF now()
CREATE FUNCTION dbo.now()
RETURNS DATETIME
AS
BEGIN
RETURN (GETDATE());
END;
GO
-- 測試看看是否真的有成功
SELECT dbo.now();
GO
-- 既然已經測試成功了,就可以移除
DROP FUNCTION dbo.now;
GO
圖表1
SQL Sever 2005是微軟花費了近五年時間,動用大批人員才完成的曠世巨作,因此很多SQL Server 2005獨有的功能,在舊版的SQL Server無法使用,比方說,上述的程序代碼在SQL Server 2000上執行便會有問題(如圖表1所示),因為GETDATE() 函數會傳回不同的日期時間,此時,請改用下列程序代碼:
-- 設定 SQL Server 選項,使其允許加入linked server
EXEC sp_serveroption '<您的SQL Server 名稱>', 'DATA ACCESS', TRUE
GO
-- 建立 UDF
CREATE FUNCTION dbo.now()
RETURNS DATETIME
AS
BEGIN
DECLARE @dt DATETIME
SELECT @dt = dt
FROM OPENQUERY
(
<您的SQL Server 名稱>, 'SELECT dt = GETDATE()'
)
RETURN @dt
END
GO
-- 測試一下吧
SELECT dbo.now()
GO
-- 測試成功,就可以將其移除
DROP FUNCTION now
GO
請注意:請將程序代碼中 <您的SQL Server 名稱> 換掉,以符合您實際環境的 SQL Server 執行個體名稱。