对象层次结构语法 (Transact-SQL)

适用于:SQL Server

支持对象层次结构语法的 sp_OAGetProperty propertyname 参数和 sp_OASetPropertymethodname 参数sp_OAMethod,类似于 Microsoft Visual Basic 的语法。 当使用该特殊语法时,这些参数具有以下通用格式。

语法

TraversedObject.PropertyOrMethod

参数

TraversedObject

存储过程中指定的 objecttoken 下的层次结构中的 OLE 对象。 使用 Visual Basic 语法指定返回对象的一系列集合、对象属性和方法。 序列中的每个对象说明符都必须用句点(.) 分隔。

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

Collection("item")

需要双引号(")。 不支持集合的 Visual Basic 感叹号 (!) 语法。

PropertyOrMethod

TraversedObject 的属性或方法的名称。

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

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

需要双引号(")。 指定了所有位置参数后,才能指定命名参数。

注解

如果未 指定 TraversedObject则需要 PropertyOrMethod

如果未 指定 PropertyOrMethod则从 OLE 自动化存储过程返回 TraversedObject 作为对象令牌输出参数。

如果指定 PropertyOrMethod,将调用 TraversedObject 的属性或方法。 属性值或方法返回值作为 OLE 自动化存储过程的输出参数返回。

如果 TraversedObject 列表中的任一项未返回 OLE 对象,则会引发错误。

有关 Visual Basic OLE 对象语法的详细信息,请参阅 Visual Basic 文档。

有关返回代码的详细信息HRESULT,请参阅sp_OACreate(Transact-SQL)。

示例

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

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

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

-- Call the CheckTable method to validate the
-- AdventureWorks2022 Person.Address table.
EXEC @hr = sp_OAMethod @object,
   'Databases("AdventureWorks2022").Tables("Person.Address").CheckTable',
   @checkoutput OUT