SQL Server 2005 - 如何在使用者自訂函數中叫用 GetDate() 函數

摘要:SQL Server 2005 - 如何在使用者自訂函數中叫用 GetDate() 函數

您可以在 SQL Server 2005 的使用者自訂函數(UDFsUser 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 執行個體名稱。