標籤:
在SQL Server中調用dll分為兩個步驟
1.建立一個dll檔案(dll檔案分成3種類型,講其中一種)
2.把dll檔案放進SQL Server的程式集中。然後定義一個Function,就可以通過該Function來引用dll中的函數。
1建立一個dll檔案
1.1點擊“檔案”->“建立”->“項目”->類庫,把命名空間改成TestDLL,添加如下代碼
(架構必須改為.NET3.5及3.5以下,因為SQL Server 2008隻是支援.NET 3.5及一下,.NET 4.0是2010年發布的,不支援也很正常,C#方法必須是靜態方法,因為靜態函數不用執行個體化類就可以調用)
建立dll程式(求和、小寫字母轉換成大寫字母)
using System;using System.Collections.Generic;using System.Text;namespace TestDLL{ public class Class1 { //求0到n的和當n小於0時返回0 //方法必須為靜態方法,因為靜態函數不用執行個體化類就可以調用 public static int Calc(int n) { int sum; sum = 0; if (n>=0) { for (int i = 0; i <= n; i++) { sum = sum + i; } return sum; } else { return 0; } } //將字串轉換成大寫 public static string Todaxie(string s) { return s.ToUpper(); } }}
1.2右擊“項目”,點擊”產生“或者直接按F6
1.3右擊“項目”,點擊“在檔案資源管理系統中開啟檔案夾”,點擊bin->debug,然後就會看到一個TestDLL.dll檔案。
2在SQL中引用dll檔案
2.1允許SQL Server允許運行使用者程式集
在SQL Server中運行如下代碼:
EXEC sp_configure ‘clr enabled‘ , ‘1‘; --0代表不允許,1代表運行RECONFIGURE;
其中TestDll是你在資料庫中為這個程式集起的名字。
2.3建立一個Function,使用該dll檔案
使用如下SQL語句
--轉換成大寫字母create FUNCTION [dbo].[ToUpper](@InputString [nvarchar](500))RETURNS [nvarchar](200) WITH EXECUTE AS CALLERAS EXTERNAL NAME [TestDLL].[TestDLL.Class1].[Todaxie]GO--求和函數CREATE FUNCTION [dbo].[Calc](@n int) --該函數名字RETURNS int --傳回型別WITH EXECUTE AS CALLERAS EXTERNAL NAME [TestDLL].[TestDLL.Class1].[Calc] --調用c#程式集GO
注意一下的那幾個單詞。
TestDLL是指你程式集中dll的名稱。
TestDLL是指dll檔案中那個類的命名空間
Class1是指dll檔案中那個類的類名
Todaxie是指dll檔案中那個被調用的靜態方法
最後,便可以這樣來調用該函數
print dbo.ToUpper(‘abc‘) --輸出的結果為ABC SELECT dbo.Calc(3) --輸出的結果為6
SQLSERVER調用DLL程式