sp_OAGetProperty (Transact-SQL)

获取 OLE 对象的属性值。

主题链接图标Transact-SQL 语法约定

语法

sp_OAGetProperty objecttoken , propertyname 
    [ , propertyvalue OUTPUT ]
    [ , index...] 

参数

  • objecttoken
    以前使用 sp_OACreate 创建的 OLE 对象的对象令牌。

  • propertyname
    要返回的 OLE 对象的属性名。

  • propertyvalueOUTPUT
    返回的属性值。如果指定此参数,则必须是相应数据类型的局部变量。

    如果属性返回 OLE 对象,则 propertyvalue 必须是数据类型为 int 的局部变量。对象令牌保存在该局部变量中,并且此对象令牌可用于其他 OLE 自动化存储过程。

    如果属性返回单个值,则为 propertyvalue 指定一个局部变量,在该局部变量中返回属性值;或者不指定 propertyvalue,以单列、单行结果集的形式向客户端返回属性值。

    属性返回数组时,如果指定了 propertyvalue,则将其设置为 NULL。

    如果指定了 propertyvalue,但是属性没有返回值,则会出现错误。如果属性返回二维以上的数组,也将出现错误。

  • index
    索引参数。如果指定了此参数,则 index 必须为具有适当数据类型的值。

    有些属性包含参数。这些属性称为索引化属性,相应的参数被称为索引参数。一个属性可有多个索引参数。

    注意注意

    此存储过程的参数按位置(而不是名称)指定。

返回代码值

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

有关 HRESULT 返回代码的详细信息,请参阅 OLE 自动化返回代码和错误信息

结果集

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

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

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

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

如果一列中的所有数据值具有相同的数据类型,此数据类型将用于整个列。当列中的数据值为其他数据类型时,将基于下表选择整个列的数据类型。

 

int

float

money

datetime

varchar

nvarchar

int

int

float

money

varchar

varchar

nvarchar

float

float

float

money

varchar

varchar

nvarchar

money

money

money

money

varchar

varchar

nvarchar

datetime

varchar

varchar

varchar

datetime

varchar

nvarchar

varchar

varchar

varchar

varchar

varchar

varchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

注释

也可用 sp_OAMethod 来获取属性值。

权限

要求具有 sysadmin 固定服务器角色的成员身份。

示例

A. 使用局部变量

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

DECLARE @property varchar(255)
EXEC @hr = sp_OAGetProperty @object, 'HostName', @property OUT
IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object
    RETURN
END
PRINT @property

B. 使用结果集

以下示例将获取 HostName 属性(先前创建的 SQLServer 对象的属性),并将其作为结果集返回给客户端。

EXEC @hr = sp_OAGetProperty @object, 'HostName'
IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object
    RETURN
END