srv_paramset (API-интерфейс расширенных хранимых процедур)
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется. Пользуйтесь вместо этого интеграцией со средой CLR. |
Устанавливает значение возвратного параметра удаленного вызова хранимой процедуры. Эта функция заменена функцией srv_paramsetoutput.
Синтаксис
int srv_paramset (
SRV_PROC *
srvproc
,
int
n
,
void *
data
,
int
len
);
Аргументы
srvproc
Указатель на структуру SRV_PROC, представляющую собой дескриптор соединения с клиентом (в данном случае — дескриптор, который получил вызов удаленной хранимой процедуры). Эта структура содержит сведения, которые используются библиотекой API-интерфейс расширенных хранимых процедур для управления связью и передачи данных между приложением и клиентом.n
Указывает номер параметра, который должен быть задан. Первый параметр имеет значение 1.data
Указатель на значение данных, которое должно быть отправлено назад клиенту, как возвратный параметр удаленной хранимой процедуры.len
Указывает фактическую длину данных, которые должны быть возвращены. Если тип данных параметра имеет постоянную длину и не допускает значений NULL (например, srvbit или srvint1), len, то параметр игнорируется..
Возвращаемое значение
SUCCEED, если значение параметра было успешно установлено; в противном случае, FAIL. Значение FAIL возвращается при отсутствии текущей удаленной хранимой процедуры, при отсутствии n-ой удаленной хранимой процедуры, когда параметр не является возвратным, а также когда аргумент len является недопустимым.
Если len— 0, то возвращается NULL. Единственным способом возвратить значение NULL клиенту является задание параметру len значения 0.
Если параметр принадлежит к одному из типов данных Microsoft SQL Server 2005, то эта функция возвращает следующие значения.
Новые типы данных |
Длина возвращаемых данных |
---|---|
BITN |
NULL:len = 0, data = IG, RET = 0 ZERO: Н/Д >=255: N/A <255: N/A |
BIGVARCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGBINARY |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
BIGVARBINARY |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NVARCHAR |
NULL:len = 0, data = IG, RET = 1 ZERO:len = IG, data = IG, RET = 0 >=255:len = max8k, data = valid, RET = 0 <255:len = <8k, data = valid, RET = 1 |
NTEXT |
NULL:len = IG, data = IG, RET = 0 ZERO:len = IG, data = IG, RET = 0 >=255:len = IG, данные = IG, RET = 0 <255:len = IG, данные = IG, RET = 0 |
RET = значение, возвращаемое srv_paramset |
|
IG = значение будет пропущено |
|
valid = любой допустимый указатель на данные |
|
Замечания
Параметры содержат данные, передаваемые между клиентами и приложением с удаленной хранимой процедурой. Клиент может указать некоторые параметры в качестве возвращаемых. Эти возвращаемые параметры могут содержать значения, которые серверное приложение открытых служб данных передает клиенту. Использование возвращаемых параметров аналогично передаче параметров по ссылке.
Возвращаемое значение невозможно задать параметру, который не был запущен, как возвращаемый параметр. Определить, как был вызван параметр можно при помощи метода srv_paramstatus.
Эта функция задает параметру возвращаемое значение, но она не отправляет это значение клиенту. Все возвращаемые параметры, независимо от того, были ли их возвращаемые значения заданы с помощью метода srv_paramset или нет, автоматически отправляются клиенту при вызове метода srv_senddone с установленным флагом состояния SRV_DONE_FINAL.
Когда удаленная хранимая процедура вызывается с параметрами, то эти параметры могут быть переданы либо по имени, либо по позиции — без указания имени). Если при вызове удаленной хранимой процедуры часть параметров передается по имени, а часть — по позиции, возникает ошибка. Обработчик SRV_RPC вызывается и в этом случае, однако он действует так, как будто параметры не были переданы, и функция srv_rpcparams возвращает значение 0.
Примечание по безопасности |
---|
Необходимо тщательно просмотреть исходный код расширенных хранимых процедур и проверить скомпилированные DLL-библиотеки перед их установкой на рабочий сервер. Сведения о проверке безопасности см. на следующем веб-узле Майкрософт. |