sp_OAMethod (Transact-SQL)

適用対象:SQL Server

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

Transact-SQL 構文表記規則

構文

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

引数

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

Methodname
呼び出す OLE オブジェクトのメソッド名です。

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

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

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

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

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

  • returnvalue が指定されていますが、メソッドは値を返しません。

  • このメソッドは、2 つ以上の次元を持つ配列を返します。

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

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

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

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

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

Note

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

リターン コードの値

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

HRESULT リターン コード、OLE オートメーション リターン コード、 エラー情報の詳細について説明します。

結果セット

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

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

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

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

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

int float 金額 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 オートメーションのサンプル スクリプト