• 相关软件
    >sp_OAMethod 创建者:webmaster 更新时间:2006-02-16 15:51

    调用 OLE 对象的方法。



    语法


    sp_OAMethod objecttoken,

        methodname

        [, returnvalue OUTPUT]

        [ , [ @parametername = ] parameter [ OUTPUT ]

        [...n]]



    参数


    objecttoken



    是先前用 sp_OACreate 创建的 OLE 对象令牌。



    methodname



    是要调用的 OLE 对象的方法名。



    returnvalue OUTPUT



    是该 OLE 对象的方法的返回值。如果指定,那么它必须是适当数据类型的局部变量。



    如果方法返回单个值,那么或者为 returnvalue 指定一个局部变量,以便在该局部变量中返回方法的返回值,或者不指定 returnvalue,以单列、单行结果集的形式将方法返回值返回给客户端。



    如果方法返回值是 OLE 对象,那么 returnvalue 必须是数据类型为 int 的局部变量。对象令牌将保存在该局部变量中,并且可由其它 OLE 自动化存储过程使用。



    当方法返回值是数组时,如果指定了 returnvalue,那么该值将被设置为 NULL。



    在下列情况下会出现错误:


    • 指定了 returnvalue,但是方法并不返回值。



    • 方法返回二维以上的数组。



    • 方法以输出参数的形式返回数组。



    [@parametername =] parameter [OUTPUT]



    是方法参数。如果指定,那么 parameter 必须是适当数据类型的值。



    若要获取输出参数的返回值,parameter 必须是适当数据类型的局部变量,并且必须指定 OUTPUT。如果指定的是常量参数,或未指定 OUTPUT,那么输出参数的任何返回值均被忽略。



    如果指定,则 parametername 必须是 Microsoft® Visual Basic® 命名参数的名称。要注意 @parametername 不并是 Transact-SQL 局部变量。将去掉符号 (@),并将 parametername 作为参数名传递给 OLE 对象。指定所有位置参数后才能指定命名参数。



    n



    是表示可以指定多个参数的占位符。



    说明  @parametername 可以是命名参数,因为它是指定方法的一部分,并将直接传递给对象。此存储过程的其它参数是按位置指定的,而不是按名称。



    返回代码值


    0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。



    有关 HRESULT 返回代码的更多信息,请参见 OLE 自动化返回代码和错误信息



    结果集


    如果方法返回值是一维或二维数组,那么该数组将作为结果集返回给客户端:


    • 一维数组作为单行结果集返回给客户端,其中的列数与数组中的元素数相等。换言之,该数组以(列)的形式返回。



    • 二维数组作为结果集返回给客户端,其中的列数与数组第一维中的元素数相同,行数与数组第二维中的元素数相同。换言之,该数组以(列、行)的形式返回。



    当属性返回值或方法返回值是数组时,sp_OAGetPropertysp_OAMethod 将向客户端返回结果集。(方法输出参数不能是数组。)这些过程扫描数组中的所有数据值,以便为该结果集的每一列确定正确的 Microsoft SQL Server™ 数据类型和数据长度。对于某个特定的列,这些过程将使用表示该列中的所有数据值所需要的数据类型和长度。



    当一列中的所有数据值都具有相同的数据类型时,此数据类型将用于整个列。当一列中的数据值使用不同的数据类型时,将按下面的图表选择整个列的数据类型。










































































     intfloatMoneydatetimevarcharnvarchar
    intintfloatMoneyvarcharvarcharnvarchar
    floatfloatfloatMoneyvarcharvarcharnvarchar
    moneymoneymoneyMoneyvarcharvarcharnvarchar
    datetimevarcharvarcharVarchardatetimevarcharnvarchar
    varcharvarcharvarcharVarcharvarcharvarcharnvarchar
    nvarcharnvarcharnvarcharNvarcharnvarcharnvarcharnvarchar



    注释


    也可用 sp_OAMethod 来获取属性值。



    权限


    只有 sysadmin 固定服务器角色的成员才能执行 sp_OAMethod



    示例


    A. 调用方法


    下面的示例调用先前创建的 SQLServer 对象的 Connect 方法。



    EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',
      'my_login', 'my_password'
    IF @hr <> 0
    BEGIN
      EXEC sp_OAGetErrorInfo @object
      RETURN
    END


    B. 获取属性


    下面的示例获取 HostName 属性(属于先前创建的 SQLServer 对象)并将其存储在局部变量中。



    DECLARE @property varchar(255)
    EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT
    IF @hr <> 0
    BEGIN
      EXEC sp_OAGetErrorInfo @object
      RETURN
    END
    PRINT @property
    相关文章
    本页查看次数: