sp_OAGetProperty (Transact-SQL)
获取 OLE 对象的属性值。
语法
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 必须为具有适当数据类型的值。有些属性包含参数。这些属性称为索引化属性,相应的参数被称为索引参数。一个属性可有多个索引参数。
注意 此存储过程的参数按位置(而不是名称)指定。
结果集
如果属性返回一维或二维数组,那么该数组将作为结果集返回给客户端:
一维数组作为单行结果集返回给客户端,其中的列数与数组中的元素数相等。换言之,该数组以列的形式返回。
二维数组作为结果集返回给客户端,其中的列数与数组第一维中的元素数相同,行数与数组第二维中的元素数相同。换言之,该数组以(列、行)的形式返回。
当属性返回值或方法返回值是数组时,sp_OAGetProperty 或 sp_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