首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

SQL Server CLR 函數實作完整範例:從 C# 類別到 T-SQL 呼叫

     編輯:關於.NET

建立 CLR 函數步驟概覽

  1. 用 .NET 支援語言撰寫靜態方法(類別)。
  2. 編譯產生組件 (DLL)。
  3. SQL Server 執行 CREATE ASSEMBLY 註冊組件。
  4. 執行 CREATE FUNCTION 建立對應的 T-SQL 函數。

注意:預設關閉 CLR 執行,需執行 sp_configure 'clr enabled', 1; RECONFIGURE; 啟用。

範例:字串分割函數 MySplit

1. C# 類別庫專案

public class Class1
{
    public static string MySplit(int filedIndex, string filedName)
    {
        if (filedIndex == null || filedIndex <= 0 || string.IsNullOrEmpty(filedName))
            return "";
        try { return filedName.Split('|')[filedIndex - 1].Trim(); }
        catch { return ""; }
    }
}

編譯產生 ClassLibrary1.dll。

2. 註冊組件 (SAFE 權限)

CREATE ASSEMBLY Class1
AUTHORIZATION [dbo]
FROM 'C:\ClassLibrary1.dll'
WITH PERMISSION_SET = SAFE;

3. 建立 T-SQL 函數

CREATE FUNCTION dbo.MySplit
(
    @filedIndex AS INT,
    @filedName AS NVARCHAR(255)
)
RETURNS NVARCHAR(255)
AS EXTERNAL NAME Class1.Class1.MySplit;
  • EXTERNAL NAME 格式:AssemblyName.ClassName.MethodName。

4. 測試呼叫

SELECT dbo.MySplit(2, name) FROM mytesttable;

測試通過,成功回傳第二欄位內容。

進階:存取外部資源

若函數需存取檔案、網路、Web Service、其他資料庫,組件需設定 EXTERNAL_ACCESS 或 UNSAFE 權限,並使用 System.IO、System.Web.Services 等類別。不支援對發起伺服器的 Loopback 連線。

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