sp_OAMethod (Transact-SQL)

Вызывает метод OLE-объекта.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

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

Аргументы

  • objecttoken
    Маркер OLE-объекта, ранее созданного с помощью процедуры sp_OACreate.

  • methodname
    Имя вызываемого метода OLE-объекта.

  • returnvalue OUTPUT
    Возвращаемое значение метода OLE-объекта. Если значение указано, оно должно быть локальной переменной соответствующего типа данных.

    Если метод возвращает одиночное значение, следует либо указать локальную переменную для аргумента returnvalue, которая вернет возвращаемое значение метода, либо не указывать аргумент returnvalue, так что возвращаемое значение метода будет возвращено клиенту в виде результирующего набора с одной строкой и одним столбцом.

    Если возвращаемое значение метода является OLE-объектом, аргумент returnvalue должен представлять собой локальную переменную с типом данных int. Маркер объекта хранится в локальной переменной и может использоваться другими хранимыми процедурами OLE-автоматизации.

    Если возвращаемое значение метода является массивом, то при указании аргумента returnvalue его значение устанавливается в NULL.

    Ошибка выдается в одном из следующих случаев.

    • Указан аргумент returnvalue, но метод не возвращает значения.

    • Метод возвращает массив, имеющий более двух измерений.

    • Метод возвращает массив в качестве выходного параметра.

  • [ @parametername*@parametername***=** ] parameter[ OUTPUT ]
    Параметр метода. Если аргумент parameter указан, он должен представлять собой значение соответствующего типа данных.

    Для получения возвращаемого значения аргумент parameter должен представлять собой локальную переменную соответствующего типа данных, кроме того, должен быть указан параметр OUTPUT. Если задан параметр-константа или не задан параметр OUTPUT, любое возвращаемое выходным параметром значение игнорируется.

    Если задан аргумент parametername, он должен представлять собой имя именованного параметра Microsoft Visual Basic. Обратите внимание, что аргумент **@**parametername не является локальной переменной Transact-SQL. Знак @ удаляется и OLE-объекту передается parametername в качестве имени параметра. Все именованные параметры должны указываться после указания всех позиционных параметров.

  • n
    Заполнитель, указывающий на возможность указания нескольких параметров.

    ПримечаниеПримечание

    Аргумент @parametername может быть именованным параметром, так как он является частью указанного метода и передается через него объекту. Другие параметры для такой хранимой процедуры задаются позицией, а не именем.

Значения кодов возврата

0 (успешное завершение) или число, отличное от нуля (неуспешное завершение), являющееся целочисленным значением HRESULT, возвращенным объектом OLE-автоматизации.

Дополнительные сведения о кодах возврата HRESULT см. в разделе Коды возврата и сведения об ошибках OLE-автоматизации.

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

Если возвращаемое значение метода представляет собой массив с одним или двумя измерениями, этот массив возвращается клиенту в виде результирующего набора.

  • Одномерный массив возвращается клиенту как результирующий набор, состоящий из одной строки, в которой число столбцов соответствует количеству элементов массива. Иными словами, массив возвращается в виде (столбцы).

  • Двумерный массив возвращается клиенту в виде результирующего набора с числом столбцов, равным числу элементов первого измерения массива, и числом строк, равным числу элементов второго измерения массива. Иными словами, массив возвращается в виде (столбцы, строки).

Если возвращаемое значение свойства или метода является массивом, процедуры 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.

Примеры

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

Б. Получение свойства

В следующем примере значение свойства 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