亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mssql 存儲(chǔ)過(guò)程調(diào)用C#編寫(xiě)的DLL文件

 更新時(shí)間:2009年05月26日 02:34:18   作者:  
有時(shí)候,我們會(huì)遇到這樣需求:存儲(chǔ)過(guò)程要調(diào)用外部的動(dòng)態(tài)鏈接庫(kù)文件,來(lái)實(shí)現(xiàn)某個(gè)功能。
網(wǎng)上很有多類似的文章,但描述不完整,在某些關(guān)鍵的地方,少了相應(yīng)的補(bǔ)充,以至于那些例子都無(wú)法測(cè)試通過(guò)。
我把其中的一種思路整理出來(lái):

1. 準(zhǔn)備DLL文件
首先,你需要新建一個(gè)類庫(kù)工程,工程名沒(méi)有要求,隨意取為Test。新建一個(gè)類文件,例如:
復(fù)制代碼 代碼如下:

using System;

namespace Test
{
public class SayHello
{
public SayHello()
{
}

public string Hi()
{
return "Hello!";
}

public string Hey(string name)
{
return "Hey!" + name;
}
}
}

編譯類庫(kù)工程得到DLL文件。

2. 注冊(cè)DLL
將DLL文件拷貝到數(shù)據(jù)庫(kù)服務(wù)器,例如:將Test.dll拷貝到D盤(pán),命令提示窗口中,進(jìn)入到.net framework 1.1的目錄下,c:\windows\Microsoft.NET\Framework\v1.1.4322>,使用命令:
regasm d:\Test.dll /codebase
窗口提示: 成功注冊(cè)了類型(或Types registered successfully)
則說(shuō)明注冊(cè)成功。
3. 測(cè)試腳本
復(fù)制代碼 代碼如下:

DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)

-- 創(chuàng)建對(duì)象實(shí)例, sp_OACreate 后引號(hào)內(nèi)為'命名空間.類名'
EXEC @hr = sp_OACreate 'Test.SayHello', @object OUT
IF @hr <> 0
BEGIN
goto info
END

-- 調(diào)用對(duì)象方法, sp_OAMetohd 參數(shù)為方法名,要求該方法屬于公共類型(public),且不能是靜態(tài)方法(即被static修飾)
EXEC @hr = sp_OAMethod @object, 'Hi', @return OUT

-- EXEC @hr = sp_OAMethod @object, 'Hey', @return OUT, 'Baby' -- 帶參數(shù)的方法的調(diào)用,多個(gè)參數(shù),依次累加在后

IF @hr <> 0
BEGIN
goto info
END

-- 查看結(jié)果
print @return


EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
goto info
END

--info:
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

4. 補(bǔ)充說(shuō)明
以上步驟,在sql server 2000下測(cè)試通過(guò),不支持其他關(guān)系數(shù)據(jù)庫(kù)。

sql server 2005中可以使用“CLR函數(shù)”來(lái)達(dá)到上述效果,圖形化操作,非常簡(jiǎn)便,不得不說(shuō)微軟的產(chǎn)品容易讓人產(chǎn)生依賴感。

相關(guān)文章

最新評(píng)論