srv_convert (API-интерфейс расширенных хранимых процедур)
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Не используйте ее при работе над новыми приложениями и как можно быстрее измените приложения, в которых она в настоящее время используется. Пользуйтесь вместо этого интеграцией со средой CLR. |
Преобразует данные из одного типа в другой.
Синтаксис
int srv_convert (
SRV_PROC *
srvproc
,
int
srctype
,
void *
src
,
DBINT
srclen
,
int
desttype
,
void * dest,DBINTdestlen);
Arguments
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-библиотеки перед их установкой на рабочий сервер. Сведения о проверке безопасности см. на следующем веб-узле Майкрософт. |