这是我写的存储过程
CREATE PROCEDURE CallDllProc(@name varchar(100), @age int)
AS
BEGIN
declare @object int
declare @ErrorCode int
select @ErrorCode = @@Error
if @ErrorCode = 0
exec @ErrorCode = sp_OACreate 'EventCom.EventTest', @object
Output
if @ErrorCode <> 0
BEGIN
declare @src varchar(255)
declare @desc varchar(255)
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@ErrorCode), source=@src, description=@desc
exec sp_oadestroy @object
return
END exec @ErrorCode = sp_OAMethod @object, 'PrintInfo', @name, @age
exec sp_OADestroy @Object
RETURN
END
GO
其中exec @ErrorCode = sp_OACreate 'EventCom.EventTest', @object 调用一个我用C#写的com组件
namespace EventCom
{ [Guid("C3BA7B17-7024-4b2d-B263-F98062004439")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IEventHelper
{
[DispId(1)]
void PrintInfo(string name, int age);
} [Guid("C66E4AA9-AC2E-4232-A6B6-AAB0BDD2B04A")]
[ClassInterface(ClassInterfaceType.None)]
public class EventTest : ServicedComponent, IEventHelper
{
public void PrintInfo(string name, int age)
{ }
}
}
调用的时候每次在用sp_OACreate创建com组件的时候都返回错误代码0x80131700,但是如果我创建的是另一些组件比如ADODB.Command.2.8的时候就没错,麻烦各位高手了。
CREATE PROCEDURE CallDllProc(@name varchar(100), @age int)
AS
BEGIN
declare @object int
declare @ErrorCode int
select @ErrorCode = @@Error
if @ErrorCode = 0
exec @ErrorCode = sp_OACreate 'EventCom.EventTest', @object
Output
if @ErrorCode <> 0
BEGIN
declare @src varchar(255)
declare @desc varchar(255)
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@ErrorCode), source=@src, description=@desc
exec sp_oadestroy @object
return
END exec @ErrorCode = sp_OAMethod @object, 'PrintInfo', @name, @age
exec sp_OADestroy @Object
RETURN
END
GO
其中exec @ErrorCode = sp_OACreate 'EventCom.EventTest', @object 调用一个我用C#写的com组件
namespace EventCom
{ [Guid("C3BA7B17-7024-4b2d-B263-F98062004439")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IEventHelper
{
[DispId(1)]
void PrintInfo(string name, int age);
} [Guid("C66E4AA9-AC2E-4232-A6B6-AAB0BDD2B04A")]
[ClassInterface(ClassInterfaceType.None)]
public class EventTest : ServicedComponent, IEventHelper
{
public void PrintInfo(string name, int age)
{ }
}
}
调用的时候每次在用sp_OACreate创建com组件的时候都返回错误代码0x80131700,但是如果我创建的是另一些组件比如ADODB.Command.2.8的时候就没错,麻烦各位高手了。
0x80131700 ODSOLE Extended Procedure NULL
我也不知道为什么?