sp_OAMethod (Transact-SQL)
Область применения: SQL Server
Вызывает метод OLE-объекта.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_OAMethod objecttoken , methodname
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
[ ; ]
Аргументы
objecttoken
Маркер объекта OLE, который ранее был создан с помощью sp_OACreate
.
имя метода
Имя метода вызываемого объекта OLE.
returnvalue OUTPUT
Возвращаемое значение метода объекта OLE. Если значение указано, оно должно быть локальной переменной соответствующего типа данных.
Если метод возвращает одно значение, либо:
- укажите локальную переменную для returnvalue, которая возвращает возвращаемое значение метода в локальной переменной; или
- Не указывайте возвращаемое значение, которое возвращает возвращаемое значение метода клиенту в виде одного столбца, результирующий набор с одной строкой.
Если возвращаемое значение метода является объектом OLE, возвращаемое значение должно быть локальной переменной типа данных int. Маркер объекта хранится в локальной переменной, и этот маркер объекта можно использовать с другими хранимыми процедурами OLE Automation.
Если возвращаемое значение метода является массивом, если задано возвращаемое значение , оно имеет NULL
значение .
Ошибка выдается в одном из следующих случаев.
- значение returnvalue указано, но метод не возвращает значение.
- Метод возвращает массив, имеющий более двух измерений.
- Метод возвращает массив в качестве выходного параметра.
[ @parametername = ] параметр [ OUTPUT ]
Параметр метода. Если задано, параметр должен быть значением соответствующего типа данных.
Чтобы получить возвращаемое значение выходного параметра, параметр должен быть локальной переменной соответствующего типа данных и OUTPUT
должен быть указан. Если задан постоянный параметр или OUTPUT
если он не указан, любое возвращаемое значение из выходного параметра игнорируется.
Если задано, имя параметра должно быть именем именованного параметра Microsoft Visual Basic. @parametername не является локальной переменной Transact-SQL. При входе (@
) удаляется, а имя параметра передается объекту OLE в качестве имени параметра. Все именованные параметры должны указываться после указания всех позиционных параметров.
n
Заполнитель, указывающий, что можно указать несколько параметров.
Примечание.
@parametername может быть именованным параметром, так как он является частью указанного метода и передается объекту. Другие параметры для такой хранимой процедуры задаются позицией, а не именем.
Значения кода возврата
0
(успешно) или ненулевое число (сбой), которое является целым значением HRESULT, возвращаемым объектом OLE Automation.
Дополнительные сведения о кодах возврата HRESULT, коды возврата ole automation и сведения об ошибках.
Результирующий набор
Если возвращаемое значение метода представляет собой массив с одним или двумя измерениями, этот массив возвращается клиенту в виде результирующего набора.
Одномерный массив возвращается клиенту как результирующий набор, состоящий из одной строки, в которой число столбцов соответствует количеству элементов массива. Иными словами, массив возвращается в виде (столбцы).
Двумерный массив возвращается клиенту в виде результирующего набора с числом столбцов, равным числу элементов первого измерения массива, и числом строк, равным числу элементов второго измерения массива. Иными словами, массив возвращается в виде (столбцы, строки).
Если возвращаемое значение свойства или метода является массивом, процедура sp_OAGetProperty
или sp_OAMethod
возвращает клиенту результирующий набор. (Выходные параметры метода не могут быть массивами.) Эти процедуры сканируют все значения данных в массиве, чтобы определить соответствующие типы данных и длины данных SQL Server, используемые для каждого столбца в результирующем наборе. Для каждого отдельного столбца эти процедуры используют тип и длину данных, необходимые для представления всех значений данных этого столбца.
Если все значения данных в столбце имеют один и тот же тип данных, этот тип используется для всего столбца. Если значения данных в столбце имеют различные типы данных, тип данных всего столбца определяется по следующей схеме.
INT | с плавающей запятой | 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 или разрешение на выполнение непосредственно в этой хранимой процедуре. Параметр конфигурации сервера Ole Automation Procedures должен быть включен для использования любой системной процедуры, связанной с OLE Automation.
Примеры
А. Вызов метода
В следующем примере вызывается 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 OUTPUT;
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END;
PRINT @property;