sql 调用 c# 的非静态方法的 dll,不成功,为什么?
1。类 库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace mydll2901
{
public class Class1
{
public Class1()
{ }
public string hello()
{
return "helloworld";
}
}
}
2。注册成功 OLE/COM Object View 中可以查看到
3。建立存储过程:
create procedure mydll2901
as
declare @object int
declare @hr int
declare @return varchar(255)
declare @src varchar(255)
declare @desc varchar(255)
EXEC @hr = sp_OACreate 'mydll2901.Class1', @object OUT
if @hr<>0
begin
exec sp_OAGetErrorInfo @object,@src OUT,@desc OUT
select 'create error',hr=convert(varbinary(4),@hr),Source=@src,Description=@desc
--return
end
EXEC @hr = sp_OAMethod @object,'hello',@return OUT
if @hr<>0
begin
exec sp_OAGetErrorInfo @object,@src OUT,@desc OUT
select 'method error',hr=convert(varbinary(4),@hr),Source=@src,description=@desc
end
print @return
exec @hr=sp_OADestroy @object
if @hr<>0
begin
exec sp_OAGetErrorInfo @object,@src out,@desc out
select 'destroy error',hr=convert(varbinary(4),@hr),Source=@src,description=@desc
return
end
4。执行存储过程:
exec mydll2901
执行结果: create error 0x80131700 ODSOLE Extended Procedure NULL
不知道是怎么回事?
请知道的朋友能帮我解决一下
附:
通过
<html>
<body>
<script language="VBScript">
Dim o : Set o=CreateObject("mydll2901.Class1")
MsgBox "Result : " & o.hello()
Set o=Nothing
</script>
</body>
</html>
这个调用,是可以的