濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 在SQL Server中使用CLR調(diào)用.NET方法實(shí)現(xiàn)思路

在SQL Server中使用CLR調(diào)用.NET方法實(shí)現(xiàn)思路

熱門(mén)標(biāo)簽:蘋(píng)果手機(jī)凱立德地圖標(biāo)注 合肥電銷(xiāo)外呼系統(tǒng)哪家公司做的好 南陽(yáng)外呼系統(tǒng)定制化 百度ai地圖標(biāo)注 同安公安400電話(huà)怎么申請(qǐng)流程 電話(huà)機(jī)器人軟件銷(xiāo)售工作 預(yù)測(cè)式外呼系統(tǒng)使用說(shuō)明 玉林市機(jī)器人外呼系統(tǒng)哪家好 申請(qǐng)400電話(huà)手續(xù)
介紹
我們一起來(lái)做個(gè)示例,在.NET中新建一個(gè)類(lèi),并在這個(gè)類(lèi)里新建一個(gè)方法,然后在SQL Server中調(diào)用這個(gè)方法。按照微軟所述,通過(guò)宿主 Microsoft .NET Framework 2.0 公共語(yǔ)言運(yùn)行庫(kù) (CLR),SQL Server 2005顯著地增強(qiáng)了數(shù)據(jù)庫(kù)編程模型。 這使得開(kāi)發(fā)人員可以用任何CLR語(yǔ)言(如C#、VB.NET或C++等)來(lái)寫(xiě)存儲(chǔ)過(guò)程、觸發(fā)器和用戶(hù)自定義函數(shù)。

我們?nèi)绾螌?shí)現(xiàn)這些功能呢?
為了使用CLR,我們需要做如下幾步:
1、在.NET中新建一個(gè)類(lèi),并在這個(gè)類(lèi)里新建一個(gè)public方法。
2、編譯這個(gè)類(lèi)為一個(gè)DLL。
3、在SQL Server中注冊(cè)這個(gè)DLL。
4、新建一個(gè)SQL Server函數(shù)來(lái)訪問(wèn)指定的.NET方法。

接下來(lái),我們一起來(lái)完成一個(gè)示例
首先,在Visual Studio中新建一個(gè)名為“SQLServerCLRTest”的類(lèi)庫(kù)項(xiàng)目。 然后,新建一個(gè)名為“CLRFunctions”的類(lèi),并在其內(nèi)添加一個(gè)名為“HelloWold”的方法,代碼如下:
復(fù)制代碼 代碼如下:

public class CLRFunctions
{
public static string HelloWorld(string Name)
{
return ("Hello " + Name);
}
}

這是一個(gè)非常簡(jiǎn)單的方法(為了讓SQL Server可以調(diào)用它,它必須要是public和static的),這個(gè)方法有一個(gè)string類(lèi)型的參數(shù),返回信息為“Hello”加上你傳入的參數(shù)。

現(xiàn)在,我們需要編譯這個(gè)項(xiàng)目為一個(gè)DLL,并在SQL Server中注冊(cè)它。 這也是比較簡(jiǎn)單的,在VS中右鍵單擊項(xiàng)目,選擇“生成”后程序就會(huì)生成一個(gè)DLL。 如果你的項(xiàng)目是調(diào)試模式的話(huà),那么就可以在如下所示那樣的路徑里找到編譯好的DLL。
復(fù)制代碼 代碼如下:

C:\Documents and Settings\mark.smith\My Documents\Visual Studio 2005\Projects\SQLServerCLRTest\SQLServerCLRTest\bin\Debug\SQLServerCLRTest.dll

找到這個(gè)DLL后,我們就可以把它拷貝到我們的SQL Server機(jī)器上了,如果是相同機(jī)器的話(huà)我們只要記住這個(gè)路徑即可。

啟用CLR功能
默認(rèn)情況下,SQL Server中的CLR是關(guān)閉的,所以我們需要執(zhí)行如下命令打開(kāi)CLR:
復(fù)制代碼 代碼如下:

exec sp_configure 'clr enabled',1
reconfigure
go

注冊(cè)DLL
為了調(diào)用我們寫(xiě)的那個(gè)方法,需要在SQL Server中注冊(cè)我們剛剛編譯好的那個(gè)DLL。 我們可以在數(shù)據(jù)庫(kù)中使用如下命令來(lái)注冊(cè)DLL(路徑為你的DLL文件的路徑)
復(fù)制代碼 代碼如下:

CREATE ASSEMBLY asmHelloWorld FROM 'C:\SQLServerCLRTest.dll'

在SQL Server中調(diào)用我們的.NET方法
為了調(diào)用.NET方法,我們可以寫(xiě)一個(gè)SQL Server自定義函數(shù),并在其內(nèi)使用“EXTERNAL NAME”來(lái)通知SQL Server使用CLR功能。 代碼如下:
復(fù)制代碼 代碼如下:

CREATE FUNCTION dbo.clrHelloWorld
(
@name as nvarchar(200)
)
RETURNS nvarchar(200)
AS EXTERNAL NAME asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld

上面的自定義函數(shù)做了兩項(xiàng)工作。 首先是聲明了一個(gè)nvarchar參數(shù),它等同于.NET里的string類(lèi)型(如果將其設(shè)置為varchar并且后面使用了“EXTERNAL NAME”的話(huà)就會(huì)報(bào)錯(cuò))。然后使用“EXTERNAL NAME”來(lái)調(diào)用.NET方法。 語(yǔ)法如下:
程序集名.類(lèi)名.方法名
但是,當(dāng)我使用這個(gè)語(yǔ)法調(diào)用.NET方法的時(shí)候,SQL Server就會(huì)報(bào)錯(cuò),所以為了讓它正常工作,我使用了如下語(yǔ)法:
程序集名.[類(lèi)名].方法名
現(xiàn)在我們就可以通過(guò)如下語(yǔ)句調(diào)用.NET方法了:
復(fù)制代碼 代碼如下:

SELECT dbo.clrHelloWorld('Mark')

當(dāng)你運(yùn)行這段代碼的時(shí)候,就會(huì)得到一個(gè)返回結(jié)果“Hello Mark”。
我們通過(guò)一個(gè)很簡(jiǎn)單的示例演示了如何實(shí)現(xiàn)SQL Server的CLR,它可以給我們帶來(lái)很多非常有用的幫助。

標(biāo)簽:嘉興 南昌 淄博 南京 臺(tái)州 海南 揚(yáng)州 南京

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在SQL Server中使用CLR調(diào)用.NET方法實(shí)現(xiàn)思路》,本文關(guān)鍵詞  在,SQL,Server,中,使用,CLR,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在SQL Server中使用CLR調(diào)用.NET方法實(shí)現(xiàn)思路》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于在SQL Server中使用CLR調(diào)用.NET方法實(shí)現(xiàn)思路的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    余庆县| 普宁市| 南陵县| 芷江| 都昌县| 青州市| 昭通市| 塘沽区| 罗源县| 永春县| 勃利县| 拜泉县| 疏附县| 永嘉县| 永丰县| 开鲁县| 灵川县| 定边县| 伊春市| 绥滨县| 惠安县| 绍兴县| 察哈| 珠海市| 布拖县| 海伦市| 青海省| 秭归县| 香格里拉县| 南华县| 米泉市| 新晃| 桓台县| 兴安县| 民乐县| 福鼎市| 沿河| 抚州市| 察隅县| 台南县| 巢湖市|