Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Соответствие
Введенная версия: Соответствие стандартам ODBC 3.0: ISO 92
Сводка
SQLGetDescRec возвращает текущие настройки или значения нескольких полей записи дескриптора. Возвращаемые поля описывают имя, тип данных и хранение столбцов или параметров.
Syntax
SQLRETURN SQLGetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLCHAR * Name,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLengthPtr,
SQLSMALLINT * TypePtr,
SQLSMALLINT * SubTypePtr,
SQLLEN * LengthPtr,
SQLSMALLINT * PrecisionPtr,
SQLSMALLINT * ScalePtr,
SQLSMALLINT * NullablePtr);
Arguments
DescriptorHandle
[Ввод] Дескрипторная ручка.
RecNumber
[Ввод] Указывает запись дескриптора, из которой приложение ищет информацию. Дескрипторные записи нумеруются начиная с 1, при этом запись 0 является записью закладки.
Аргумент RecNumber должен быть меньше или равен значению SQL_DESC_COUNT. Если RecNumber меньше или равен SQL_DESC_COUNT, но строка не содержит данных для столбца или параметра, вызов SQLGetDescRec вернёт значения полей. (Для получения дополнительной информации см. раздел «Инициализация дескрипторных полей» в SQLSetDescField.)
Name
[Выход] Указатель на буфер, в котором возвращается поле SQL_DESC_NAME для записи дескриптора.
Если Name — NULL, StringLengthPtr всё равно вернёт общее количество символов (за исключением символа null-termination для данных символов), доступных для возврата в буфере, на который указывает Name.
BufferLength
[Ввод] Длина буфера *Имя , в символах.
StringLengthPtr
[Выход] Указатель на буфер, в котором возвращается количество символов данных, доступных для возврата в буфере *Name , за исключением символа null-termination. Если количество символов было больше или равно BufferLength, данные в *Name усекаются до BufferLength минус длина символа null-termination и заканчиваются драйвером.
TypePtr
[Выход] Указатель на буфер, в котором возвращается значение поля SQL_DESC_TYPE для записи дескриптора.
SubTypePtr
[Выход] Для записей, тип которых SQL_DATETIME или SQL_INTERVAL, это указатель на буфер, в котором возвращается значение поля SQL_DESC_DATETIME_INTERVAL_CODE.
LengthPtr
[Выход] Указатель на буфер для возврата значения поля SQL_DESC_OCTET_LENGTH для записи дескриптора.
PrecisionPtr
[Выход] Указатель на буфер, в котором возвращается значение поля SQL_DESC_PRECISION для записи дескриптора.
ScalePtr
[Выход] Указатель на буфер, в котором возвращается значение поля SQL_DESC_SCALE для записи дескриптора.
NullablePtr
[Выход] Указатель на буфер, в котором возвращается значение поля SQL_DESC_NULLABLE для записи дескриптора.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA или SQL_INVALID_HANDLE.
SQL_NO_DATA возвращается, если RecNumber превышает текущее количество дескрипторных записей.
SQL_NO_DATA возвращается, если DescriptorHandle — это дескриптор IRD, и оператор находится в состоянии подготовленного или выполненного, но открытого курсора с ним не связано.
Diagnostics
Когда SQLGetDescRec возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, соответствующее значение SQLSTATE можно получить, вызвав SQLGetDiagRec с HandleType SQL_HANDLE_DESC и HandleDescriptorHandle. В следующей таблице перечислены значения SQLSTATE, обычно возвращаемые SQLGetDescRec , и каждое из них объясняется в контексте этой функции; обозначение «(DM)» предшествует описаниям SQLSTATE, возвращаемым менеджером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
| SQLSTATE | Error | Description |
|---|---|---|
| 01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 01004 | Строковые данные, усеченные справа | Буфер *Name был недостаточно велик, чтобы вернуть всё поле описания. Поэтому поле было сокращено. Длина неусечённого дескрипторного поля возвращается в *StringLengthPtr. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
| 07009 | Индекс некорректного дескриптора | Аргумент FieldIdentifier был полем записи, аргумент RecNumber был установлен как 0, а аргумент DescriptorHandle — IPD-дескриптором. (DM) Аргумент RecNumber был установлен в 0, атрибут оператора SQL_ATTR_USE_BOOKMARKS — в SQL_UB_OFF, а аргумент DescriptorHandle был дескриптом IRD. Аргумент RecNumber был меньше 0. |
| 08S01 | Сбой связи | Связь между драйвером и источником данных, к которому был подключен драйвер, произошел сбой до завершения обработки функции. |
| HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину. |
| HY001 | Ошибка выделения памяти | Драйвер не смог выделить память, необходимую для выполнения или завершения функции. |
| HY007 | Связанная инструкция не подготовлена | DescriptorHandle был связан с IRD, и связанный оператор не находился в состоянии подготовленного или выполненного. |
| HY010 | Ошибка последовательности функций | (DM) DescriptorHandle был связан с StatementHandle , для которого вызывалась асинхронно выполняющаяся функция (не эта), которая всё ещё выполнялась во время вызова этой функции. (DM) DescriptorHandle был связан с StatementHandle , для которого вызывался и возвращался SQL_NEED_DATA SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos . Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов. (DM) Для дескриптора соединения, связанного с DescriptorHandle, была вызвана асинхронно выполняющаяся функция. Эта асинхронная функция всё ещё выполнялась, когда был вызван SQLGetDescRec . |
| HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
| HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
| HYT01 | Время ожидания для подключения истекло | Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | Драйвер не поддерживает эту функцию | (DM) Драйвер, связанный с DescriptorHandle , не поддерживает эту функцию. |
Comments
Приложение может вызвать SQLGetDescRec для получения значений следующих полей дескриптора для одного столбца или параметра:
SQL_DESC_NAME
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (для записей, тип которых SQL_DATETIME или SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_NULLABLE (SQL: возможность значения NULL)
SQLGetDescRec не получает значения для заголовочных полей.
Приложение может предотвратить возврат настройки поля, установив аргумент, соответствующий этому полю, на нулевой указатель.
Когда приложение вызывает SQLGetDescRec для получения значения поля, не определённого для определённого типа дескриптора, функция возвращает SQL_SUCCESS, но возвращаемое значение для поля неопределённо. Например, вызов SQLGetDescRec для SQL_DESC_NAME или SQL_DESC_NULLABLE поля APD или ARD вернёт SQL_SUCCESS неопределенное значение для поля.
Когда приложение вызывает SQLGetDescRec для получения значения поля, определённого для определённого типа дескриптора, но не имеющего значения по умолчанию и ещё не установленного, функция возвращает SQL_SUCCESS, но значение для этого поля не определённо. Для получения дополнительной информации см. раздел «Инициализация дескрипторных полей» в SQLSetDescField.
Значения полей также можно получить отдельно с помощью вызова SQLGetDescField. Для описания полей в заголовке или записи дескриптора см. SQLSetDescField. Дополнительные сведения о дескрипторах см. в разделе "Дескрипторы".
Связанные функции
| Сведения о | Смотри |
|---|---|
| Переплетывание колонны | Функция SQLBindCol |
| Связывание параметра | Параметрическая функция SQLBindParameter |
| Получение дескрипторного поля | Функция SQLGetDescField |
| Установка нескольких полей дескрипторов | Функция SQLSetDescRec |