オブジェクト階層構文 (Transac-SQL)
sp_OAGetProperty および sp_OASetProperty の propertyname パラメータと、sp_OAMethod の 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 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
参照
関連項目
OLE オートメーション ストアド プロシージャ (Transact-SQL)