在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 CALLER AS EXTERNAL NAME [TestDLL].[TestDLL.Class1].[Todaxie] GO --求和函數 CREATE FUNCTION [dbo].[Calc](@n int) --該函數名字 RETURNS int --返回類型 WITH EXECUTE AS CALLER AS 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