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

SQL Server 2000 整合 .NET 元件實現漢字簡繁轉換

     編輯:關於SqlServer

前置需求

  • 伺服器安裝 .NET Framework 1.1。
  • sn.exe -k c:\snkey.snk 產生強名稱金鑰。

C# 元件原始碼

using System;
using System.Runtime.InteropServices;
using System.Reflection;

[assembly: AssemblyKeyFile("snKey.snk")]
namespace Microshaoft
{
    public interface IStrings
    {
        string StringConvert(string x);
    }
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class Strings : IStrings
    {
        public string StringConvert(string x)
        {
            return Microsoft.VisualBasic.Strings.StrConv(x,
                Microsoft.VisualBasic.VbStrConv.TraditionalChinese,
                System.Globalization.CultureInfo.CurrentCulture.LCID);
        }
    }
}

編譯與註冊

csc.exe /t:library /out:Microshaoft.dll Microshaoft.cs /r:Microsoft.VisualBasic.dll
regasm.exe Microshaoft.dll /tlb:Microshaoft.tlb /codebase

T-SQL 呼叫包裝函數

CREATE FUNCTION UDF_StringConvert(@Input VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
BEGIN
    DECLARE @Obj INT, @HR INT, @Src VARCHAR(255), @Desc VARCHAR(255), @Ret VARCHAR(8000);
    SET @Ret = '';
    EXEC @HR = sp_OACreate 'Microshaoft.Strings', @Obj OUT;
    IF @HR = 0
    BEGIN
        EXEC @HR = sp_OAMethod @Obj, 'StringConvert', @Ret OUT, @Input;
        IF @HR <> 0
        BEGIN
            EXEC sp_OAGetErrorInfo @Obj, @Src OUT, @Desc OUT;
            SET @Ret = @Obj + ' ' + @Src + ' ' + @Desc;
        END
    END
    ELSE
    BEGIN
        EXEC sp_OAGetErrorInfo @Obj, @Src OUT, @Desc OUT;
        SET @Ret = @Obj + ' ' + @Src + ' ' + @Desc;
    END
    EXEC sp_OADestroy @Obj;
    RETURN @Ret;
END
GO

-- 測試
SELECT dbo.UDF_StringConvert('阿姐速度極高');  -- 返回 '阿姐速度極高' (繁體)

注意事項

  • 需以 sysadmin 身分建立函數(使用 sp_OA* 系列)。
  • 生產環境建議加入快取機制,避免頻繁建立/銷毀 COM 物件。
  • 簡轉繁參數改為 VbStrConv.SimplifiedChinese 即可雙向轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved