我用VC.Net写了一个COM,用Sql Server的sp_OAMethod方法调用,确始终提示执行失败VC函数原形是:
SetInputProp([in] BSTR bstrServer, [in] BSTR bstrInstance, [in] BSTR bstrDatabase, [in] BSTR bstrUser, [in] BSTR bstrPassword);用Sql Server调用时,可以创建这个实例,但是当调用SetInputProp函数时出错,调用方法如下:exec @hr = sp_OAMethod @object, 'SetInputProp', 'fc', 'esri_sde', 'sde', 'sde', 'sde'错误号是:-2147211483
错误提示:sp_OAMethod 的用法: ObjPointer int IN, MethodName varchar IN [, @returnval <any> OUT [, additional IN, OUT, or BOTH param但我用VB调用正常,请大家给参谋参谋,谢谢拉~~~~

解决方案 »

  1.   

    看你的函数应该没有返回值.
    sp_OAMethod objecttoken,
        methodname
        [, returnvalue OUTPUT]
        [ , [ @parametername = ] parameter [ OUTPUT ]
        [...n]]
    这里的returnvalue应该设置为NULL,
    exec @hr = sp_OAMethod @object, 'SetInputProp',NULL, 'fc', 'esri_sde', 'sde', 'sde', 'sde'
    good luck!
      

  2.   

    类型不匹配
    (0x80020005)
    用于存储返回的属性值或者方法返回值的 Transact-SQL 局部变量的数据类型与属性或方法返回值的 Visual Basic 数据类型不匹配。或者,要求属性或方法返回值,但该属性或方法未返回值。你在看看!!
      

  3.   

    By definition, an OLE BSTR object is composed of Unicode characters.
      

  4.   

    exec @hr = sp_OAMethod @object, N'SetInputProp',NULL, N'fc', N'esri_sde', N'sde', N'sde', N'sde'Try!!
      

  5.   

    还是不行.........
    ===========================================================
    类型不匹配
    (0x80020005)
    用于存储返回的属性值或者方法返回值的 Transact-SQL 局部变量的数据类型与属性或方法返回值的 Visual Basic 数据类型不匹配。或者,要求属性或方法返回值,但该属性或方法未返回值。
    ===========================================================我的函数没有返回值啊,但是上面提示为什么总是提示返回值问题呢?必须要先找到BSTR在VB中的对应类型,才能在sql server里调,但是我在vb里调用这个函数返回正常啊....