Поделиться через


Синтаксис иерархии объектов (Transact-SQL)

Параметр propertyname процедур sp_OAGetProperty и sp_OASetProperty и параметр methodname процедуры sp_OAMethod поддерживают синтаксис иерархии объектов, аналогичный синтаксису иерархии объектов Microsoft Visual Basic. При использовании этого синтаксиса приведенные выше аргументы имеют следующий общий вид:

Синтаксис

'TraversedObject.PropertyOrMethod'

Аргументы

  • TraversedObject
    Объект OLE, находящийся в иерархии под маркером objecttoken, указан в хранимой процедуре. Серии коллекций, свойства объектов и методы, возвращающие объекты, указываются с помощью синтаксиса Visual Basic. Описатели объектов в сериях разделяются точкой (.).

    Элемент в серии может быть именем коллекции. Коллекции указываются с помощью следующего синтаксиса:

    Коллекция("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 Automation. Если аргумент PropertyOrMethod задан, то вызывается свойство или метод TraversedObject, а значение свойства или метода возвращается в виде выходного аргумента хранимой процедуры OLE Automation.

Если ни один элемент из списка TraversedObject не возвращает объект OLE, то возникает ошибка.

Дополнительные сведения о синтаксисе объектов OLE в Visual Basic см. в документации по Visual Basic.

Дополнительные сведения о кодах возврата типа HRESULT см. в разделе sp_OACreate (Transact-SQL).

Примеры

Ниже приведены примеры синтаксиса иерархии объекта, в которых используется объект SQL-DMO SQLServer.

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

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

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