六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用C#編寫擴展存儲過程

[摘要]什么是擴展存儲過程?擴展存儲過程使您得以使用象 C 這樣的編程語言創建自己的外部例程。對用戶來說,擴展存儲過程與普通存儲過程一樣,執行方法也相同。可將參數傳遞給擴展存儲過程,擴展存儲過程可返回結果,...
什么是擴展存儲過程?


擴展存儲過程使您得以使用象 C 這樣的編程語言創建自己的外部例程。對用戶來說,擴展存儲過程與普通存儲過程一樣,執行方法也相同。可將參數傳遞給擴展存儲過程,擴展存儲過程可返回結果,也可返回狀態。擴展存儲過程可用于擴展 Microsoft® SQL Server™ 2000 的功能。

擴展存儲過程是 SQL Server 可以動態裝載并執行的動態鏈接庫 (DLL)。擴展存儲過程直接在 SQL Server 的地址空間運行,并使用 SQL Server 開放式數據服務 (ODS) API 編程。

編寫好擴展存儲過程后,固定服務器角色 sysadmin 的成員即可在 SQL Server 中注冊該擴展存儲過程,然后授予其他用戶執行該過程的權限。擴展存儲過程只能添加到 master 數據庫中。

使用 C# 編寫擴展存儲過程

下面就以一個簡單的例子來演示如何用 C#  編寫擴展存儲過程。
首先,我們創建一個簡單的C#類庫文件:

//C# file: Csserver.cs

using System;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Runtime.CompilerServices;

[assembly: AssemblyTitle("CSServer")]
[assembly: AssemblyDescription("Test SQL .NET interop")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("MyKey.snk")]
namespace SQLInterop {
public interface ITest{
string SayHello();
}

[ClassInterface(ClassInterfaceType.AutoDual)]
public class CsharpHelper : ITest {
public string SayHello() {
return "Hello from CSharp";
}
}
}


然后創建用 sn -k 為該類庫創建一個強名密鑰文件,并編譯之。
sn -k MyKey.snk
csc /t:library Csserver.cs

注冊該類庫:
regasm /tlb:Csserver.tlb csserver.dll /codebase


這樣一個擴展存儲過程就編寫注冊完了,下面我們在sql  server中測試一下效果。

T-SQL stored proc.

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

-- 創建對象實例。
EXEC @hr = sp_OACreate 'SQLInterop.CsharpHelper', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END

-- 調用對象方法。
EXEC @hr = sp_OAMethod @object, 'SayHello', @return OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
PRINT @return

-- 銷毀對象實例。
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END 


主站蜘蛛池模板: 一区一精品| 亚洲欧美香蕉在线日韩精选 | 青青青青青视频免费播放 | 日本欧美视频在线观看 | 四虎免费在线播放 | 日本一区二区三区在线观看视频 | 亚洲另类电击调教在线观看 | 日韩欧美在线综合 | 亚洲欧美天堂 | 午夜精品久久久久久毛片 | 日本一本在线播放 | 亚洲视频在线观看网站 | 亚欧日韩毛片在线看免费网站 | 淫片网站 | 日本亚洲欧洲高清有码在线播放 | 午夜影院在线 | 天堂中文在线网 | 日韩a毛片| 日本青娱乐 | 自拍中文字幕 | 西西人体大胆77777视频 | 欧美野外性xxxxfeexxxx | 日韩精品视频在线免费观看 | 亚洲视频在线观看网站 | 亚洲成a人在线观看 | 欧美野外性xxxxfeexxxx | 天天干天天舔天天射 | 特级黄视频 | 亚洲永久精品免费www52zcm男男 | 午夜精品国产 | 日韩精品欧美一区二区三区 | 香港全黄一级毛片在线播放 | 欧美午夜影院 | 欧美性色欧美a在线播放 | 亚洲日本欧美产综合在线 | 中文字幕乱偷乱码亚洲 | 在线中文字幕一区 | 欧美一级特黄aaaaaaa在线观看 | 日韩深夜视频 | 天堂v| 日本在线观看一级高清片 |