当前位置:首页 > 网络编程 > 软件语言 > C# > C# 编写扩展存储过程

C# 编写扩展存储过程

点击次数:54 次 发布日期:2008-11-11 16:53:14 作者:源代码网
源代码网推荐
广告载入中
下面就以一个简单的例子来演示如何用 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 

源代码网整理以下注明:扩展存储过程

源代码网整理以下扩展存储过程使您得以使用象 C 这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。可将参数传递给扩展存储过程,扩展存储过程可返回结 果,也可返回状态。扩展存储过程可用于扩展 Microsoft&reg; SQL Server&#8482; 2000 的功能。

扩展存储过程是 SQL Server 可以动态装载并执行的动态链接库 (DLL)。扩展存储过程直接在 SQL Server 的地址空间运行,并使用 SQL Server 开放式数据服务 (ODS) API 编程。

编写好扩展存储过程后,固定服务器角色 sysadmin 的成员即可在 SQL Server 中注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中。


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华