本篇文章為大家展示了.NET中CLR函數(shù)如何使用,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十載的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都近1000家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。
在 SQL Server 中創(chuàng)建 CLR 函數(shù)分為下列幾個(gè)步驟:
使用 .NET Framework 支持的語(yǔ)言將函數(shù)定義為類的靜態(tài)方法。然后,使用適當(dāng)?shù)恼Z(yǔ)言編譯器編譯該類,在 .NET Framework 中生成程序集。使用 CREATE ASSEMBLY 語(yǔ)句在 SQL Server 中注冊(cè)程序集。通過(guò)使用 CREATE FUNCTION 語(yǔ)句創(chuàng)建引用注冊(cè)程序集的函數(shù)。
注意:
在 Microsoft Visual Studio 中部署 SQL Server 項(xiàng)目將在為該項(xiàng)目指定的數(shù)據(jù)庫(kù)中注冊(cè)程序集。部署項(xiàng)目時(shí),還會(huì)在數(shù)據(jù)庫(kù)中為使用 SqlFunction 屬性注釋的所有方法創(chuàng)建 CLR 函數(shù)。
注意:
默認(rèn)情況下,關(guān)閉 SQL Server 執(zhí)行 CLR 代碼的功能。您可以創(chuàng)建、更改和刪除引用托管代碼模塊的數(shù)據(jù)庫(kù)對(duì)象,但是除非通過(guò)使用 sp_configure (Transact-SQL) 啟用了 clr enabled 選項(xiàng),否則這些引用將不會(huì)在 SQL Server 中執(zhí)行。
訪問(wèn)外部資源
可以使用 CLR 函數(shù)訪問(wèn)外部資源,例如文件、網(wǎng)絡(luò)資源、Web 服務(wù)及其他數(shù)據(jù)庫(kù)(包括 SQL Server 遠(yuǎn)程實(shí)例)。這可以通過(guò)使用 .NET Framework 中的各種類(例如 System.IO、System.WebServices 及 System.Sql 等)來(lái)實(shí)現(xiàn)。至少應(yīng)將包含此類函數(shù)的程序集配置為設(shè)置了 EXTERNAL_ACCESS 權(quán)限,才能實(shí)現(xiàn)此目的。可以使用 SQL 客戶端托管訪問(wèn)接口訪問(wèn) SQL Server 遠(yuǎn)程實(shí)例。但在 CLR 函數(shù)中不支持與發(fā)起服務(wù)器的環(huán)回連接。
示例如下:
***步:
第二步:
public class Class1
{
public static string MySplit(int filedIndex, string filedName)
{
//filedIndex從1開始
try
{
if (filedIndex == null || filedIndex <= 0 || filedName == null || filedName == "")
{
return "";
}
else
{
return filedName.Split('|')[filedIndex - 1].Trim();
}
}
catch
{
return "";
}
}
}
//得到程序集 ClassLibrary1.dll
第三步:
CREATE ASSEMBLY Class1 AUTHORIZATION [dbo] FROM 'C:\ClassLibrary1.dll' WITH PERMISSION_SET = SAFE |
第四步:
CREATE FUNCTION dbo.MySplit ( @filedIndex AS INT, @filedName AS NVARCHAR(255) ) RETURNS NVARCHAR(255) AS EXTERNAL NAME Class1.Class1.MySplit |
第五步(測(cè)試):
select dbo.MySplit(2,name) from mytesttable
上述內(nèi)容就是.NET中CLR函數(shù)如何使用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。