SQLSERVER調用DLL程序


在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM