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


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

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

Синтаксис

'TraversedObject.PropertyOrMethod'

Аргументы

  • TraversedObject
    Объект OLE, находящийся в иерархии под маркером objecttoken, указан в хранимой процедуре. Серии коллекций, свойства объектов и методы, возвращающие объекты, указываются с помощью синтаксиса 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 Automation. Если аргумент PropertyOrMethod задан, то вызывается свойство или метод TraversedObject, а значение свойства или метода возвращается в виде выходного аргумента хранимой процедуры OLE Automation.

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

Дополнительные сведения о синтаксисе объектов OLE в Visual Basic см. в документации по 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)