在SQL Server中使用CLR調用.NET類庫中的方法

在SQL Server中調用 .NET 類庫的方法要分爲下面幾步來實現:

    1、在.NET中新建一個類庫項目,並在這個項目中添加一個類文件,並把要被SQL Server調用的方法定義爲公有的,靜態的方法。
    2、把這個項目編譯爲一個DLL。
    3、在SQL Server中註冊這個DLL。
    4、通過使用SQL Server的函數來訪問指定的.NET方法。

 

1: 在類庫中編寫方法,必須是靜態公有的


public   class  CLRFunctions 

   
public   static   string  HelloWorld( string  Name) 
    

       
return  ( " Hello "   +  Name);
    }

}


2: 啓用CLR功能
       默認情況下,SQL Server中的CLR是關閉的,所以我們需要執行如下命令打開CLR


    exec  sp_configure  ' clr enabled ' , 1
    reconfigure [with override]
    go

 

     

      如果上面的命令在執行過程中出現“不支持對系統目錄進行即席更新 ”的錯誤時,可以把上面方括號裏面的內容加上。

3:註冊DLL
    爲了調用我們寫的那個方法,需要在SQL Server中註冊我們剛剛編譯好的那個DLL。 我們可以在數據庫中使用如下命令來註冊DLL(路徑爲你的DLL文件的路徑)

CREATE  ASSEMBLY asmHelloWorld  FROM   ' C:/SQLDLL.dll '    


    如果要刪除註冊的DLL,可以使用下面的方法:

 

DROP ASSEMBLY asmHelloWorld 

 

 

4:在SQL Server中調用我們的.NET方法
     爲了調用.NET方法,我們可以寫一個SQL Server自定義函數,並在其內使用“EXTERNAL NAME”來通知SQL Server使用CLR功能。 代碼如下:

CREATE   FUNCTION  dbo.clrHelloWorld   
(   
    
@name   as   nvarchar ( 200 )    中國網管論壇bbs.bitsCN.com
)    
RETURNS   nvarchar ( 200 )   
AS  EXTERNAL NAME asmHelloWorld. [ SQLDLL .CLRFunctions ] .HelloWorld 


    上面的自定義函數做了兩項工作。首先是聲明瞭一個nvarchar參數,它等同於.NET裏的string類型(如果將其設置爲varchar並且後面使用了“EXTERNAL NAME”的話就會報錯)。然後使用“EXTERNAL NAME”來調用.NET方法。 語法如下:

 

程序集名.類名.方法名


    但是,當我使用這個語法調用.NET方法的時候,SQL Server就會報錯,所以爲了讓它正常工作,我使用瞭如下語法:

程序集註冊名.[程序集名.類名].方法名

網管網bitsCN.com
    現在我們就可以通過如下語句調用.NET方法了:

SELECT  dbo.clrHelloWorld( ' Mark ' )
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章