オブジェクト階層構文 (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 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