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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Вызывает метод OLE-объекта.Calls a method of an OLE object.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

objecttokenobjecttoken
Токен OLE-объекта, который ранее был создан с помощью sp_OACreate.Is the object token of an OLE object that was previously created by using sp_OACreate.

имя_методаmethodname
Имя вызываемого метода OLE-объекта.Is the method name of the OLE object to call.

returnValueвыходных данных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.

Если метод возвращает одиночное значение, либо указать локальную переменную для returnvalue, который возвращает метод, возвращаемое значение в локальной переменной, либо не указывайте returnvalue, который возвращает метод возвращать значение клиенту в виде одного столбца и одной строки результирующего набора.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-объект returnvalue должен быть локальной переменной типа данных 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.

Если возвращаемое значение метода является массивом, если returnvalue указан, ему присваивается значение 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 указан, но метод не возвращает значение.returnvalue is specified, but the method does not return a value.

  • Метод возвращает массив, имеющий более двух измерений.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. Если задан параметр-константа или ВЫВОДА не указан, любое возвращаемое выходным параметром значение игнорируется.If a constant parameter is specified, or if OUTPUT is not specified, any return value from an output parameter is ignored.

Если указано, parametername должно быть имя MicrosoftMicrosoft Visual BasicVisual Basic именованного параметра.If specified, parametername must be the name of the MicrosoftMicrosoft Visual BasicVisual Basic named parameter. Обратите внимание, что @ _parametername_is не Transact-SQLTransact-SQL локальной переменной.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 (успешное завершение) или ненулевое число (неуспешное завершение), которое является целочисленным значением типа HRESULT, возвращаемого объектом OLE-автоматизации.0 (success) or a nonzero number (failure) that is the integer value of the HRESULT returned by the OLE Automation object.

Дополнительные сведения о кодах возврата HRESULT OLE Automation коды возврата и сведения об ошибках.For more information about HRESULT Return Codes, OLE Automation Return Codes and Error Information.

Результирующие наборыResult Sets

Если возвращаемое значение метода представляет собой массив с одним или двумя измерениями, этот массив возвращается клиенту в виде результирующего набора.If the method return value is an array with one or two dimensions, the array is returned to the client as a result set:

  • Одномерный массив возвращается клиенту как результирующий набор, состоящий из одной строки, в которой число столбцов соответствует количеству элементов массива.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).

  • Двумерный массив возвращается клиенту в виде результирующего набора с числом столбцов, равным числу элементов первого измерения массива, и числом строк, равным числу элементов второго измерения массива.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. Если значения данных в столбце имеют различные типы данных, тип данных всего столбца определяется по следующей схеме.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.

ssNoversionint 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 Automation Procedures Конфигурация должна быть включена для использования любой системной процедуры, связанные с OLE-автоматизации.Ole Automation Procedures configuration must be enabled to use any system procedure related to OLE Automation.

ПримерыExamples

A.A. Вызов методаCalling a method

В следующем примере вызывается Connect метод созданного ранее SQLServer объекта.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. Получение свойстваGetting a property

В следующем примере возвращается HostName свойство (созданного ранее SQLServer объекта) и сохраняет его в локальной переменной.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 Automation хранимых процедур (Transact-SQL) OLE Automation Stored Procedures (Transact-SQL)
Пример скрипта OLE-автоматизацииOLE Automation Sample Script