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

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

语法

'TraversedObject.PropertyOrMethod'

参数

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

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

    Collection("item")

    要求使用双引号 (")。 不支持用于集合的 Visual Basic 惊叹号 (!) 语法。

  • PropertyOrMethod
    TraversedObject 的属性或方法的名称。

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

    PropertyOrMethod

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

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

    要求使用双引号 (")。 必须在指定所有位置参数后指定命名参数。

注释

如果未指定 TraversedObject,则需要使用 PropertyOrMethod。

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

如果 TraversedObject 列表中的任何项均未返回 OLE 对象,将引发错误。

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

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

示例

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

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

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

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

请参阅

参考

OLE 自动化脚本示例

OLE 自动存储过程 (Transact-SQL)