首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 新功能速覽(二):使用者定義函數取代游標

     編輯:關於SqlServer

使用者定義函數(UDF)登場

SQL Server 2000 支援標量與資料表值函數。以往優化建議避免使用游標(高系統開銷),但某些逐列處理邏輯(如漢字轉拼音需查表)不得不使用游標。UDF 現可封裝此類邏輯,大幅降低開銷。

實例:漢字轉拼音函數 vs 游標

-- 使用者定義函數
CREATE FUNCTION Translate (@Original_Text VARCHAR(100))
RETURNS VARCHAR(500)
AS
BEGIN
    DECLARE @intLength TINYINT, @strTemp VARCHAR(10),
            @strResult VARCHAR(500), @strChar VARCHAR(2),
            @i TINYINT
    SET @intLength = LEN(@Original_Text)
    SET @strResult = ''
    SET @i = 1
    WHILE @i <= @intLength
    BEGIN
        SELECT @strChar = SUBSTRING(@Original_Text, @i, 1)
        SET @strTemp = NULL
        SELECT @strTemp = spell FROM wordspell WHERE Word = @strChar
        SELECT @strResult = @strResult + ISNULL(@strTemp, @strChar)
        SET @i = @i + 1
    END
    RETURN @strResult
END
GO

-- 單一陳述式完成批次更新
UPDATE phonecode SET namesame = Translate(name), addsame = Translate(address)

對比游標版本需宣告多變數、開啟游標、逐列 FETCH、更新、關閉游標,UDF 版本程式碼精簡、可維護性高、執行計畫最佳化更佳。下期將探討新資料類型。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved