获取 OLE 对象的属性值。
sp_OAGetProperty objecttoken,
propertyname
[, propertyvalue OUTPUT]
[, index...]
objecttoken
是先前用 sp_OACreate 创建的 OLE 对象令牌。
propertyname
是要返回的 OLE 对象的属性名。
propertyvalue OUTPUT
是返回的属性值。如果指定,那么它必须是适当数据类型的局部变量。
如果属性返回 OLE 对象,那么 propertyvalue 必须是数据类型为 int 的局部变量。对象令牌将保存在该局部变量中,并且可由其它 OLE 自动化存储过程使用。
如果属性返回单个值,那么或者为 propertyvalue 指定一个局部变量,以在该局部变量中返回属性值,或者不指定 propertyvalue,以单列、单行结果集的形式将属性值返回给客户端。
当属性返回数组时,如果指定了 propertyvalue,那么该值将被设置为 NULL。
如果指定了 propertyvalue,但属性不返回值,那么将出现错误。如果属性返回二维以上的数组,也将出现错误。
索引
是索引参数。如果指定,那么它必须是适当数据类型的值。
一些属性带有参数。这些属性称为索引化属性,其参数被称为索引参数。一个属性可有多个索引参数。
说明 此存储过程的参数按位置指定,而不是按名称。
0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
有关 HRESULT 返回代码的更多信息,请参见 OLE 自动化返回代码和错误信息。
如果属性返回一维或二维数组,那么该数组将作为结果集返回给客户端:
当属性返回值或方法返回值是数组时,sp_OAGetProperty 或 sp_OAMethod 将向客户端返回结果集。(方法输出参数不能是数组。)这些过程扫描数组中的所有数据值,以便为该结果集的每一列确定正确的 Microsoft® 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 固定服务器角色的成员才能执行 sp_OAGetProperty。
下面的示例获取 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
下面的示例获取 HostName 属性(属于先前创建的 SQLServer 对象)并将其作为结果集返回给客户端。
EXEC @hr = sp_OAGetProperty @object, 'HostName'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
相关文章