sp_OAMethod (Transact-SQL)
適用対象: SQL サーバー
OLE オブジェクトのメソッドを呼び出します。
構文
sp_OAMethod objecttoken , methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
引数
objecttoken
sp_OACreateを使用して以前に作成された OLE オブジェクトのオブジェクト トークンです。
methodname
呼び出す OLE オブジェクトのメソッド名です。
returnvalue OUTPUT
OLE オブジェクトのメソッドの戻り値です。 指定する場合は、適切なデータ型のローカル変数でなければなりません。
メソッドが 1 つの値を返す場合は、 returnvalueにローカル変数を指定します。ローカル変数でメソッドの戻り値を返すか、 returnvalue を指定しません。これは、メソッドの戻り値を単一列の単一行の結果セットとしてクライアントに返します。
メソッドの戻り値が OLE オブジェクトの場合、 returnvalue はデータ型 int のローカル変数である必要があります。オブジェクト トークンはローカル変数に格納され、このオブジェクト トークンは他の OLE オートメーション ストアド プロシージャと共に使用できます。
メソッドの戻り値が配列の場合、 returnvalue が指定されている場合は NULL に設定されます。
次のいずれかが発生すると、エラーが発生します。
returnvalue が指定されていますが、メソッドは値を返しません。
このメソッドは、2 つ以上の次元を持つ配列を返します。
メソッドが出力パラメーターとして配列を返す場合
[ _@parametername = ] parameter[ OUTPUT ]
メソッド パラメーターです。 指定する場合、 パラメーター は適切なデータ型の値である必要があります。
出力パラメーターの戻り値を取得するには、 パラメーター が適切なデータ型のローカル変数である必要があり、 OUTPUT を指定する必要があります。 定数パラメーターが指定されている場合、または OUTPUT が指定されていない場合、出力パラメーターからの戻り値は無視されます。
指定する場合、 parametername は Microsoft Visual Basic の名前付きパラメーターの名前である必要があります。 @_parametername_is Transact-SQL ローカル変数ではないことに注意してください。 アットマーク (@) が削除され、パラメーター名として ole オブジェクトに渡 パラメーター名。 すべての位置指定パラメーターを指定した後で、すべての名前付きパラメーターを指定する必要があります。
n
複数のパラメーターを指定できることを示すプレースホルダーです。
Note
@parametername 指定されたメソッドの一部であり、オブジェクトに渡されるため、名前付きパラメーターを指定できます。 このストアド プロシージャの他のパラメーターは、名前ではなく位置で指定されます。
リターン コードの値
0 (成功) または 0 以外の数値 (失敗) は、OLE オートメーション オブジェクトによって返される HRESULT の整数値です。
HRESULT リターン コードの詳細については、「 OLE Automation リターン コードとエラー情報。
結果セット
メソッドの戻り値が 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. メソッドを呼び出す
次の例では、前に作成した SQLServer オブジェクトのConnect
メソッドを呼び出します。
EXEC @hr = sp_OAMethod @object, 'Connect', NULL, 'my_server',
'my_login', 'my_password';
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END;
B. プロパティの取得
次の例では、(前に作成した SQLServer オブジェクトの) HostName
プロパティを取得し、ローカル変数に格納します。
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 オートメーションのサンプル スクリプト
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示