SQL Server 调用C#。net写的Dll 1、构造DLL:首先我们要在。net里面创建一个类库工程,写个简单的HelloWorld using System;
namespace MyDll { /// <summary> /// Class1 的摘要说明。 /// </summary> public class Class1 { public Class1() { // // TODO: 在此处添加构造函数逻辑 // } public String sayHello() { return "HelloWorld"; } } } MyDll是这个Dll的名字.编译以后,到你输出目录里找MyDll.dll生成了;切换到命令行模式,在MyDll.dll的目录下输入sn -k MyDll.snk生成密钥对; 然后回到你的vs.net工程下打开AssemblyInfo.cs看[assembly: AssemblyKeyFile("")]选项,输入你的密钥对路径‘..\\..\\bin\\Debug\\MyDll.snk’ 重新编译MyDll.dll;最后是装配了,在命令行下输入:regasm MyDll.dll,成功后将MyDll.dll拷贝到C:\WINDOWS\assembly目录下 (这一步是听说的,不知道啥用。但是实际我试过不用拷贝也可以调用)。
2、 SQLSERVER调用事例: declare @ret int declare @object int declare @src varchar(500) declare @desc varchar(500) declare @return varchar(500) exec @ret=sp_OACreate 'MyDll.Class1',@object out IF @ret <> 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT hr=convert(varbinary(4),@ret), Source=@src, Description=@desc RETURN END -- Call a method that returns a value. EXEC @ret = sp_OAMethod @object, 'sayHello', @return OUT IF @ret <> 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT ret=convert(varbinary(4),@ret), Source=@src, Description=@desc RETURN END print 'result='+@return -- Destroy the object. EXEC @ret = sp_OADestroy @object IF @ret <> 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT ret=convert(varbinary(4),@ret), Source=@src, Description=@desc RETURN END

|