Поделиться через


srv_convert (API-интерфейс расширенных хранимых процедур)

Применимо к:SQL Server

Внимание

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Пользуйтесь вместо этого интеграцией со средой CLR.

Преобразует данные из одного типа в другой.

Синтаксис

  
int srv_convert (  
SRV_PROC *  
srvproc  
,  
int  
srctype  
,  
void *  
src  
,  
DBINT  
srclen  
,  
int  
desttype  
,  
void *  
  dest  
,  
DBINT  
destlen  
);  

Аргументы

srvproc
Указатель на структуру SRV_PROC, который представляет собой дескриптор соединения с клиентом. В этой структуре содержатся все данные управления, которые используются библиотекой API расширенных хранимых процедур для управления обменом сообщениями и данными между приложением и клиентом. Если задан дескриптор srvproc, он передается функции обработки ошибок из API расширенных хранимых процедур в случае возникновения ошибки.

srctype
Задает тип данных, подлежащих преобразованию. Этот параметр может иметь любой из типов данных API-интерфейса расширенных хранимых процедур.

src
Указатель на данные, подлежащие преобразованию. Этот параметр может иметь любой из типов данных API-интерфейса расширенных хранимых процедур.

srclen
Задает длину данных, подлежащих преобразованию, в байтах. Если параметр srclen равен 0, то функция srv_convert помещает в целевую переменную значение NULL. Если значение этого параметра не равно 0, то он не учитывается для типов данных с фиксированной длиной, для которых исходные данные предполагаются равными NULL. Для данных типа SRVCHAR длина (равная -1) означает, что строка завершается нулевым символом.

desttype
Задает тип, к которому будут преобразованы исходные данные. Этот параметр может иметь любой из типов данных API-интерфейса расширенных хранимых процедур.

dest
Указатель на целевую переменную, куда будут помещены преобразованные данные. Если этот указатель имеет значение NULL, функция srv_convert вызывает обработчик ошибок, если он был задан пользователем, и возвращает значение –1.

Если значение параметра desttype равно SRVDECIMAL или SRVNUMERIC, параметр dest должен быть указателем на структуру типа DBNUMERIC или DBDECIMAL с заранее заданными и требуемыми значениями точности и масштаба. Параметр DEFAULTPRECISION позволяет задать точность по умолчанию, а параметр DEFAULTSCALE — масштаб по умолчанию.

destlen
Задает длину целевой переменной в байтах. Для типов с фиксированной длиной это значение не учитывается. Для целевой переменной типа SRVCHAR значение параметра destlen представляет собой полную длину буфера назначения. Длина переменной назначения типа SRVCHAR or SRVBINARY (равная -1) указывает, что места достаточно. Для переменной назначения типа srvchar длина, равная –1, вызывает завершение строки нулевым символом.

Возвраты

Длина преобразованных данных в байтах, если преобразование типов было проведено успешно. Если функция srv_convert получает запрос на преобразование, которое не поддерживается, то вызывает обработчик ошибок, если он был задан разработчиком, устанавливает глобальный номер ошибки и возвращает значение –1.

Замечания

Функция srv_willconvert определяет, допустимо ли данное преобразование.

Преобразование в приблизительные числовые типы данных SRVFLT4 и SRVFLT8 может привести к некоторой потере точности. Преобразование из приблизительных числовых типов данных SRVFLT4 и SRVFLT8 в типы SRVCHAR и SRVTEXT также может привести к некоторой потере точности.

Преобразование к типу SRVFLTx, SRVINTx, SRVMONEY, SRVMONEY4, SRVDECIMAL или SRVNUMERIC может привести к переполнению, если число больше максимально допустимого значения для целевого типа, или к потере точности, если число меньше минимально допустимого значения для целевого типа. Если переполнение происходит при преобразовании к типу SRVCHAR или SRVTEXT, то первым символом результирующей величины становится звездочка (*), свидетельствующая об ошибке.

При преобразовании SRVCHAR в SRVBINARY функция srv_convert интерпретирует SRVCHAR как шестнадцатеричное значение, независимо от того, начинается ли строка с 0. При преобразовании SRVBINARY в SRVCHAR функция srv_convert создает шестнадцатеричную строку без начального 0. Во всех остальных случаях преобразование в тип данных SRVBINARY и обратно — прямое побитовое копирование.

В некоторых случаях применяется преобразование значений некоторого типа в значения того же типа. Например, преобразование из типа SRVCHAR в тип SRVCHAR с параметром destlen (равным –1) добавляет к строке признак конца в виде нулевого символа.

Описание типов данных и преобразования типов данных API процедур расширенного хранилища см. в разделе "Типы данных" (API расширенных хранимых процедур)".

Вызов функции srv_convert может оказаться неудачным по нескольким причинам.

  • Запрошенное преобразование невозможно.

  • Преобразование привело к усечению, переполнению или потере точности в целевой переменной.

  • При преобразовании строки символов в числовой тип произошла синтаксическая ошибка.

Внимание

Необходимо тщательно просмотреть исходный код расширенных хранимых процедур и проверить скомпилированные библиотеки DLL перед их установкой на рабочий сервер. Сведения о проверке безопасности см. на следующем веб-сайте Майкрософт.

См. также

srv_setutype (API-интерфейс расширенных хранимых процедур)
srv_willconvert (API-интерфейс расширенных хранимых процедур)