sp_OAMethod (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン)

OLE オブジェクトの メソッドを呼び出します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

  
sp_OAMethod objecttoken , methodname  
    [ , returnvalue OUTPUT ]   
    [ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]   

引数

objecttoken
を使用して以前に作成された OLE オブジェクトのオブジェクト トークン sp_OACreate。

Methodname
呼び出す OLE オブジェクトのメソッド名を指定します。

returnvalue OUTPUT
OLE オブジェクトのメソッドの戻り値です。 指定する場合は、適切なデータ型のローカル変数でなければなりません。

メソッドが 1 つの値を返す場合は 、returnvalue にローカル変数を指定します。この変数は、ローカル変数のメソッドの戻り値を返します。または 、returnvalue を指定しません。これは、メソッドの戻り値を単一列の単一行の結果セットとしてクライアントに返します。

メソッドの戻り値が OLE オブジェクトの場合 、returnvalue は int データ型のローカル変数である 必要があります。オブジェクト トークンはローカル変数に格納され、このオブジェクト トークンは他の OLE Automation ストアド プロシージャと一緒に使用できます。

メソッドの戻り値が配列の場合 、returnvalue が指定されている場合は NULL に設定されます。

次のいずれかのエラーが発生すると、エラーが発生します。

  • returnvalue が指定されているが、 メソッドは値を返していない。

  • メソッドは、2 次元を超える配列を返します。

  • メソッドが出力パラメーターとして配列を返す場合

[ _@parametername = ] parameter[ OUTPUT ] メソッド パラメーターです。 指定する場合、 パラメーターは 適切なデータ型の値である必要があります。

出力パラメーターの戻り値を取得するには、パラメーターが適切なデータ型のローカル変数である必要があります。また、OUTPUT を指定する必要があります。 定数パラメーターが指定されている場合、または OUTPUT が指定されていない場合、出力パラメーターからの戻り値は無視されます。

指定する場合 、parametername は 名前付きパラメーターの名前である Microsoft Visual Basic 必要があります。 ローカル @ 変数_parametername_isされていない点 Transact-SQL に注意してください。 アット サイン ( @ ) が削除され、 パラメーター名が パラメーター名として OLE オブジェクトに渡されます。 すべての位置指定パラメーターを指定した後に、すべての名前付きパラメーターを指定する必要があります。

n
複数のパラメーターを指定可能であることを示すプレースホルダーです。

注意

@ parametername は、指定されたメソッドの一部であり、 オブジェクトに渡される名前付きパラメーターです。 このストアド プロシージャの他のパラメーターは、名前ではなく、位置で指定されます。

リターン コードの値

OLE オートメーション オブジェクトによって返される HRESULT の整数値である 0 (成功) または 0 以外の数値 (失敗)。

HRESULT リターン コードの詳細については 、「OLE オートメーションリターン コード」および「エラー情報」を参照してください

結果セット

メソッドの戻り値が 1 次元または 2 次元の配列である場合、配列は結果セットとしてクライアントに返されます。

  • 1 次元の配列の場合は、配列内の要素数と同数の列を持つ 1 行の結果セットとしてクライアントに返されます。 つまり、配列は (列数) として返されます。

  • 2 次元の配列の場合は、最初の次元の配列の要素数を列数とし、2 番目の次元の配列の要素数を行数とした結果セットとしてクライアントに返します。 つまり、配列は (列、行) として返されます。

プロパティの戻り値またはメソッドの戻り値が配列の場合、sp_OAGetPropertyまたはsp_OAMethod結果セットがクライアントに返されます。 メソッドの出力パラメーターを配列にすることはできません。これらのプロシージャは、配列内のすべてのデータ値をスキャンし、結果セットのそれぞれの列に使用する SQL Server の適切なデータ型とデータ長を決定します。 これらのプロシージャは必要なデータ型とデータ長を使用して、特定の列内のすべてのデータ値を表現します。

列内のすべてのデータ値が同じデータ型を共有する場合は、そのデータ型を列全体で使用します。 列のデータ値が異なるデータ型の場合、列全体のデータ型は次のグラフに基づいて選択されます。

INT float money DATETIME varchar nvarchar
int int float money varchar varchar nvarchar
float float float money varchar varchar nvarchar
money money money money varchar varchar nvarchar
datetime varchar varchar varchar datetime varchar nvarchar
varchar varchar varchar varchar varchar varchar nvarchar
nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar nvarchar

解説

プロパティ値を取得 sp_OAMethod を使用できます。

アクセス許可

sysadmin 固定サーバー ロールのメンバーシップ、 またはこのストアド プロシージャに対する直接実行アクセス許可が必要です。 Ole Automation Procedures OLE オートメーションに 関連するシステム プロシージャを使用するには、構成を有効にする必要があります。

A. メソッドを呼び出す

次の例では、 Connect 以前に作成した SQLServer オブジェクトのメソッドを呼び出します。

EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',  
    'my_login', 'my_password';  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object  
    RETURN  
END;  

B. プロパティを取得する

次の例では、 HostName (以前に作成した SQLServer オブジェクトの) プロパティを取得し、ローカル変数に格納します。

DECLARE @property varchar(255);  
EXEC @hr = sp_OAMethod @object, 'HostName', @property OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object  
    RETURN  
END;  
PRINT @property;  

参照

OLE オートメーションストアドプロシージャ (Transact SQL)
OLE オートメーションのサンプル スクリプト