Transact-SQL 参考

对象层次结构语法

sp_OAGetPropertysp_OASetPropertypropertyname 参数以及 sp_OAMethodmethodname 支持对象层次结构语法类似于 Microsoft® Visual Basic®。当使用该特殊语法时,这些参数有下列通用格式:

语法

'TraversedObject.PropertyOrMethod'

参数

TraversedObject

是存储过程中指定的在层次结构中位于 objecttoken 下的 OLE 对象。使用 Visual Basic 语法指定一系列集合、对象属性和返回对象的方法。系列中的每个对象指定符必须用句号 (.) 隔开。

系列中的项目可以是集合名。使用下面的语法指定集合:

Collection("item")

必须用双引号 (") 将 item 括起来。不支持用于集合的 Visual Basic 感叹号 (!) 语法。

PropertyOrMethod

TraversedObject 属性或方法的名称

若要通过使用 sp_OAGetPropertysp_OASetProperty sp_OAMethod 参数(包括支持 sp_OAMethod 输出参数)指定所有索引或方法参数,请使用下面的语法:

PropertyOrMethod

若要在圆括号内指定所有索引或方法参数(将导致忽略 sp_OAGetPropertysp_OASetProperty sp_OAMethod 的所有检索或方法参数),请使用下面的语法:

PropertyOrMethod( [ParameterName :=] "parameter" [,...] )

必须用双引号 (") 将每个参数括起来。指定所有位置参数后才能指定命名参数。

注释

如果没有指定 TraversedObject,则必需有 PropertyOrMethod

如果没有指定 PropertyOrMethodTraversedObject 将作为对象令牌输出参数从 OLE 自动化存储过程返回。如果已指定 PropertyOrMethod,将调用 TraversedObject 的属性或方法,且属性值或方法返回值作为输出参数从 OLE 自动化存储过程返回。

如果 TraversedObject 列表中的任何项目没有返回 OLE 对象,则说明发生了错误。

有关 Visual Basic OLE 对象语法的更多信息,请参见 Visual Basic 文档。

有关 HRESULT 返回代码的更多信息,请参见 sp_OACreate 部分的"HRESULT 返回代码"。

示例

下面是使用 SQL-DMO SQLServer 对象的对象层次结构语法示例。

-- Call the Connect method of the SQLServer object.
EXEC @hr = sp_OAMethod @object,
    'Connect("my_server", "my_login", "my_password")'

-- Get the pubs..authors Table object.
EXEC @hr = sp_OAGetProperty @object,
    'Databases("pubs").Tables("authors")',
    @table OUT

-- Get the Rows property of the pubs..authors table.
EXEC @hr = sp_OAGetProperty @object,
    'Databases("pubs").Tables("authors").Rows',
    @rows OUT

-- Call the CheckTable method of the pubs..authors table.
EXEC @hr = sp_OAMethod @object,
    'Databases("pubs").Tables("authors").CheckTable',
    @checkoutput OUT

请参见

使用 OLE 自动化存储过程进行数据类型转换

OLE 自动化脚本示例

如何创建 OLE 自动化对象 (Transact-SQL)

系统存储过程(OLE 自动化扩展存储过程)

如何调试自定义 OLE 自动化服务器 (Transact-SQL)