sp_OAMethod (Transact-SQL)sp_OAMethod (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

OLE オブジェクトのメソッドを呼び出します。Calls a method of an OLE object.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

引数Arguments

objecttokenobjecttoken
以前にsp_OACreateを使用して作成された OLE オブジェクトのオブジェクトトークンです。Is the object token of an OLE object that was previously created by using sp_OACreate.

methodnamemethodname
呼び出す OLE オブジェクトのメソッド名を指定します。Is the method name of the OLE object to call.

戻り 結果の出力returnvalue OUTPUT
OLE オブジェクトのメソッドの戻り値です。Is the return value of the method of the OLE object. 指定する場合は、適切なデータ型のローカル変数でなければなりません。If specified, it must be a local variable of the appropriate data type.

メソッドが単一の値を返す場合は、戻り値のローカル変数を指定します。これにより、ローカル変数のメソッドの戻り値が返されます。または、メソッドの戻り値をとしてクライアントに返す戻り値を指定しないでください。単一列、単一行の結果セット。If the method returns a single value, either specify a local variable for returnvalue, which returns the method return value in the local variable, or do not specify returnvalue, which returns the method return value to the client as a single-column, single-row result set.

メソッドの戻り値が OLE オブジェクトの場合、戻り値は、データ型がintのローカル変数である必要があります。オブジェクト トークンがローカル変数に格納され、このオブジェクト トークンを他の OLE オートメーション ストアド プロシージャで使用できます。If the method return value is an OLE object, returnvalue must be a local variable of data type int. An object token is stored in the local variable, and this object token can be used with other OLE Automation stored procedures.

メソッドの戻り値が配列の場合、戻り値が指定されている場合は NULL に設定されます。When the method return value is an array, if returnvalue is specified, it is set to NULL.

次のいずれかが発生すると、エラーが発生します。An error is raised when any one of the following occurs:

  • 戻り値が指定されていますが、メソッドは値を返しません。returnvalue is specified, but the method does not return a value.

  • メソッドは、3次元以上の配列を返します。The method returns an array with more than two dimensions.

  • メソッドが出力パラメーターとして配列を返す場合The method returns an array as an output parameter.

[ _@parametername = ] parameter[ OUTPUT ] はメソッドパラメーターです。[ _@parametername = ] parameter[ OUTPUT ] Is a method parameter. 指定する場合、パラメーターは、適切なデータ型の値である必要があります。If specified, parameter must be a value of the appropriate data type.

出力パラメーターの戻り値を取得するには、パラメーターを適切なデータ型のローカル変数にする必要があり、出力を指定する必要があります。To obtain the return value of an output parameter, parameter must be a local variable of the appropriate data type, and OUTPUT must be specified. 定数パラメーターが指定されている場合、またはoutputが指定されていない場合、出力パラメーターからの戻り値は無視されます。If a constant parameter is specified, or if OUTPUT is not specified, any return value from an output parameter is ignored.

指定する場合、 parameternameMicrosoftMicrosoft Visual BasicVisual Basic の名前付きパラメーターの名前である必要があります。If specified, parametername must be the name of the MicrosoftMicrosoft Visual BasicVisual Basic named parameter. @No__t-1**-2 @no__t ローカル変数ではないことに注意してください。Note that @_parametername_is not a Transact-SQLTransact-SQL local variable. アットマーク ( @ ) が削除され、 parameternameがパラメーター名として OLE オブジェクトに渡されます。The at sign (@**) is removed, and parameternameis passed to the OLE object as the parameter name. すべての名前付きのパラメーターは、位置で決まるパラメーターをすべて指定した後で指定する必要があります。All named parameters must be specified after all positional parameters are specified.

nn
複数のパラメーターを指定できることを示すプレースホルダーです。Is a placeholder indicating that multiple parameters can be specified.

注意

@parameternameは、指定されたメソッドの一部であり、オブジェクトに渡されるため、名前付きパラメーターにすることができます。@parametername can be a named parameter because it is part of the specified method and is passed through to the object. このストアドプロシージャの他のパラメーターは、名前ではなく位置によって指定されます。The other parameters for this stored procedure are specified by position, not name.

リターン コードの値Return Code Values

成功した場合は 0、失敗した場合は OLE オートメーション オブジェクトによって返される HRESULT の 0 以外の整数値を返します。0 (success) or a nonzero number (failure) that is the integer value of the HRESULT returned by the OLE Automation object.

HRESULT リターンコード、 OLE オートメーションのリターンコード、およびエラー情報の詳細については、「」を参照してください。For more information about HRESULT Return Codes, OLE Automation Return Codes and Error Information.

結果セットResult Sets

メソッドの戻り値が 1 次元または 2 次元の配列である場合、配列は結果セットとしてクライアントに返されます。If the method return value is an array with one or two dimensions, the array is returned to the client as a result set:

  • 1 次元の配列の場合は、配列内の要素数と同数の列を持つ 1 行の結果セットとしてクライアントに返されます。A one-dimensional array is returned to the client as a single-row result set with as many columns as there are elements in the array. つまり、配列は (列数) として返されます。In other words, the array is returned as (columns).

  • 2 次元の配列の場合は、最初の次元の配列の要素数を列数とし、2 番目の次元の配列の要素数を行数とした結果セットとしてクライアントに返します。A two-dimensional array is returned to the client as a result set with as many columns as there are elements in the first dimension of the array and with as many rows as there are elements in the second dimension of the array. つまり、配列を (列数,行数) として返します。In other words, the array is returned as (columns, rows).

プロパティの戻り値またはメソッドの戻り値が配列の場合、 sp_OAGetPropertyまたはsp_OAMethodは結果セットをクライアントに返します。When a property return value or method return value is an array, sp_OAGetProperty or sp_OAMethod returns a result set to the client. メソッドの出力パラメーターを配列にすることはできません。これらのプロシージャは、配列内のすべてのデータ値をスキャンし、結果セットのそれぞれの列に使用する SQL ServerSQL Server の適切なデータ型とデータ長を決定します。(Method output parameters cannot be arrays.) These procedures scan all the data values in the array to determine the appropriate SQL ServerSQL Server data types and data lengths to use for each column in the result set. これらのプロシージャは必要なデータ型とデータ長を使用して、特定の列内のすべてのデータ値を表現します。For a particular column, these procedures use the data type and length required to represent all data values in that column.

列内のすべてのデータ値が同じデータ型を共有する場合は、そのデータ型を列全体で使用します。When all data values in a column share the same data type, that data type is used for the whole column. 1 列のデータ値がそれぞれ異なるデータ型である場合、列全体に適用されるデータ型は次の表を基に選択されます。When data values in a column are of different data types, the data type of the whole column is chosen based on the following chart.

intint FLOATfloat moneymoney DATETIMEdatetime varcharvarchar NVARCHARnvarchar
intint intint floatfloat moneymoney varcharvarchar varcharvarchar nvarcharnvarchar
floatfloat floatfloat floatfloat moneymoney varcharvarchar varcharvarchar nvarcharnvarchar
moneymoney moneymoney moneymoney moneymoney varcharvarchar varcharvarchar nvarcharnvarchar
datetimedatetime varcharvarchar varcharvarchar varcharvarchar datetimedatetime varcharvarchar nvarcharnvarchar
varcharvarchar varcharvarchar varcharvarchar varcharvarchar varcharvarchar varcharvarchar nvarcharnvarchar
nvarcharnvarchar nvarcharnvarchar nvarcharnvarchar nvarcharnvarchar nvarcharnvarchar nvarcharnvarchar nvarcharnvarchar

コメントRemarks

Sp_OAMethodを使用してプロパティ値を取得することもできます。You can also use sp_OAMethod to get a property value.

アクセス許可Permissions

Sysadmin固定サーバーロールのメンバーシップ、またはこのストアドプロシージャに対して直接実行権限が必要です。Requires membership in the sysadmin fixed server role or execute permission directly on this Stored Procedure. OLE オートメーションに関連するシステムプロシージャを使用するには、@no__t 0 の構成を有効にする必要があります。Ole Automation Procedures configuration must be enabled to use any system procedure related to OLE Automation.

使用例Examples

A.A. メソッドを呼び出すCalling a method

次の例では、以前に作成したSQLServerオブジェクトの Connect メソッドを呼び出します。The following example calls the Connect method of the previously created SQLServer object.

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

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

次の例では、(以前に作成したSQLServerオブジェクトの) HostName プロパティを取得し、ローカル変数に格納します。The following example gets the HostName property (of the previously created SQLServer object) and stores it in a local variable.

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

関連項目See Also

OLE オートメーションストアドプロシージャ(transact-sql) OLE Automation Stored Procedures (Transact-SQL)
OLE オートメーションのサンプル スクリプトOLE Automation Sample Script