|
|
| 使用 C# 编写扩展存储过程 |
| 作者:佚名 来源:不详 发布时间:2006-5-9 16:48:42 发布人:chinazhan |
减小字体
增大字体
什么是扩展存储过程?
扩展存储过程使您得以使用象C这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。可将参数传递给扩展存储过程,扩展存储过程可返回结果,也可返回状态。扩展存储过程可用于扩展Microsoft®SQLServer™2000的功能。
扩展存储过程是SQLServer可以动态装载并执行的动态链接库(DLL)。扩展存储过程直接在SQLServer的地址空间运行,并使用SQLServer开放式数据服务(ODS)API编程。
编写好扩展存储过程后,固定服务器角色sysadmin的成员即可在SQLServer中注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到master数据库中。
使用C#编写扩展存储过程
下面就以一个简单的例子来演示如何用C#编写扩展存储过程。 首先,我们创建一个简单的C#类库文件:
//C#file:Csserver.cs
usingSystem; usingSystem.Runtime.InteropServices; usingSystem.Reflection; usingSystem.Runtime.CompilerServices;
[assembly:AssemblyTitle("CSServer")] [assembly:AssemblyDescription("TestSQL.NETinterop")] [assembly:AssemblyVersion("1.0.0.1")] [assembly:AssemblyDelaySign(false)] [assembly:AssemblyKeyFile("MyKey.snk")] namespaceSQLInterop{ publicinterfaceITest{ stringSayHello(); }
[ClassInterface(ClassInterfaceType.AutoDual)] publicclassCsharpHelper:ITest{ publicstringSayHello(){ return"HellofromCSharp"; } } }
然后创建用 sn-k为该类库创建一个强名密钥文件,并编译之。 sn-kMyKey.snk csc/t:libraryCsserver.cs
注册该类库: regasm/tlb:Csserver.tlbcsserver.dll/codebase
这样一个扩展存储过程就编写注册完了,下面我们在sqlserver中测试一下效果。
T-SQLstoredproc.
DECLARE@objectint DECLARE@hrint DECLARE@propertyvarchar(255) DECLARE@returnvarchar(255) DECLARE@srcvarchar(255),@descvarchar(255)
--创建对象实例。 EXEC@hr=sp_OACreate'SQLInterop.CsharpHelper',@objectOUT IF@hr<>0 BEGIN EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT SELECThr=convert(varbinary(4),@hr),Source=@src,Description=@desc RETURN END
--调用对象方法。 EXEC@hr=sp_OAMethod@object,'SayHello',@returnOUT IF@hr<>0 BEGIN EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT SELECThr=convert(varbinary(4),@hr),Source=@src,Description=@desc RETURN END PRINT@return
--销毁对象实例。 EXEC@hr=sp_OADestroy@object IF@hr<>0 BEGIN EXECsp_OAGetErrorInfo@object,@srcOUT,@descOUT SELECThr=convert(varbinary(4),@hr),Source=@src,Description=@desc RETURN END asp">存储过程asp?tags=C#">C#
|
| |
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|