Синтаксис иерархии объектов (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).
Примеры
Ниже приведены примеры синтаксиса иерархии объекта, в которых используется объект SQLServer SQL-DMO.
-- Get the AdventureWorks Person.Address Table object.
EXEC @hr = sp_OAGetProperty @object,
'Databases("AdventureWorks").Tables("Person.Address")',
@table OUT
-- Get the Rows property of the AdventureWorks Person.Address table.
EXEC @hr = sp_OAGetProperty @object,
'Databases("AdventureWorks").Tables("Person.Address").Rows',
@rows OUT
-- Call the CheckTable method to validate the
-- AdventureWorks Person.Address table.
EXEC @hr = sp_OAMethod @object,
'Databases("AdventureWorks").Tables("Person.Address").CheckTable',
@checkoutput OUT
См. также