Функция SQLNumResultCols
Соответствие
Представлена версия: соответствие стандартам ODBC 1.0: ISO 92
Сводка
SQLNumResultCols возвращает количество столбцов в результирующем наборе.
Синтаксис
SQLRETURN SQLNumResultCols(
SQLHSTMT StatementHandle,
SQLSMALLINT * ColumnCountPtr);
Аргументы
ОператорHandle
[Входные данные] Дескриптор инструкции.
ColumnCountPtr
[Выходные данные] Указатель на буфер, в котором возвращается количество столбцов в результирующем наборе. Это число не включает связанный столбец закладки.
Возвраты
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR или SQL_INVALID_HANDLE.
Диагностика
Когда SQLNumResultCols возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO, связанное значение SQLSTATE можно получить путем вызова SQLGetDiagRec с помощью HandleType SQL_HANDLE_STMT и handle of StatementHandle. В следующей таблице перечислены значения SQLSTATE, которые обычно возвращаются SQLNumResultCols и объясняются каждый из них в контексте этой функции. Нотация "(DM)" предшествует описаниям SQLSTATEs, возвращаемых диспетчером драйверов. Возвращаемый код, связанный с каждым значением SQLSTATE, SQL_ERROR, если не указано иное.
SQLSTATE | Ошибка | Описание |
---|---|---|
01000 | Общее предупреждение | Информационное сообщение для конкретного драйвера. (Функция возвращает SQL_SUCCESS_WITH_INFO.) |
08S01 | Сбой связи | Связь между драйвером и источником данных, к которому был подключен драйвер, произошел сбой до завершения обработки функции. |
HY000 | Общая ошибка | Произошла ошибка, для которой не было определенного SQLSTATE и для которого не было определено значение SQLSTATE для конкретной реализации. Сообщение об ошибке, возвращаемое SQLGetDiagRec в буфере *MessageText , описывает ошибку и ее причину. |
HY001 | Ошибка выделения памяти | Драйверу не удалось выделить память, необходимую для поддержки выполнения или завершения функции. |
HY008 | Операция отменена | Асинхронная обработка была включена для ОператораHandle. Функция была вызвана и до завершения выполнения, SQLCancel или SQLCancelHandle была вызвана в ОператорHandle. Затем функция была вызвана на ОператорHandle. Функция была вызвана и до завершения выполнения SQLCancel или SQLCancelHandle была вызвана оператором StatementHandle из другого потока в многопотоковом приложении. |
HY010 | Ошибка последовательности функций | (DM) Асинхронно выполняющаяся функция была вызвана для дескриптора соединения, связанного с ОператоромHandle. Эта асинхронная функция по-прежнему выполнялась при вызове функции SQLNumResultsCols . (DM) SQLExecute, SQLExecDirect или SQLMoreResults был вызван для ОператораHandle и возвращен SQL_PARAM_DATA_AVAILABLE. Эта функция была вызвана до получения данных для всех потоковых параметров. (DM) Функция была вызвана до вызова SQLPrepare или SQLExecDirect для StatementHandle. (DM) асинхронно выполняющаяся функция (не эта) была вызвана для StatementHandle и по-прежнему выполнялась при вызове этой функции. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations или SQLSetPos были вызваны для ОператораHandle и возвращены SQL_NEED_DATA. Эта функция была вызвана до отправки данных для всех параметров выполнения или столбцов. Дополнительные сведения о освобождении дескриптора инструкций см . в функции SQLPrepare. |
HY013 | Ошибка управления памятью | Не удалось обработать вызов функции, так как к базовым объектам памяти не удалось получить доступ, возможно, из-за низкой памяти. |
HY117 | Подключение приостановлено из-за неизвестного состояния транзакции. Разрешены только функции отключения и только для чтения. | (DM) Дополнительные сведения о приостановленном состоянии см. в статье SQLEndTran Function. |
HYT01 | Время ожидания для подключения истекло | Срок ожидания подключения истек до того, как источник данных ответил на запрос. Период времени ожидания подключения задается через SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Драйвер не поддерживает эту функцию | (DM) Драйвер, связанный с StatementHandle , не поддерживает функцию. |
IM017 | Опрос отключен в асинхронном режиме уведомлений | При использовании модели уведомлений опрос отключается. |
IM018 | SQLCompleteAsync не был вызван для выполнения предыдущей асинхронной операции с этим дескриптором. | Если предыдущий вызов функции дескриптора возвращает SQL_STILL_EXECUTING и если включен режим уведомлений, sqlCompleteAsync должен вызываться на дескрипторе для выполнения последующей обработки и завершения операции. |
SQLNumResultCols может возвращать любой SQLSTATE, который может быть возвращен SQLPrepare или SQLExecute при вызове после SQLPrepare и до SQLExecute, в зависимости от того, когда источник данных оценивает инструкцию SQL, связанную с инструкцией.
Комментарии
SQLNumResultCols можно вызывать успешно, только если инструкция находится в подготовленном, выполняемом или расположенном состоянии.
Если инструкция, связанная с StatementHandle , не возвращает столбцы, SQLNumResultCols задает значение *ColumnCountPtr значение 0.
Число столбцов, возвращаемых SQLNumResultCols , совпадает со значением поля SQL_DESC_COUNT IRD.
Дополнительные сведения см. в разделе "Создание результирующих наборов" и "Как используются метаданные?".
Связанные функции
Сведения | Смотрите |
---|---|
Привязка буфера к столбцу в результирующем наборе | Функция SQLBindCol |
Отмена обработки инструкций | Функция SQLCancel |
Возврат сведений о столбце в результирующем наборе | Функция SQLColAttribute |
Возврат сведений о столбце в результирующем наборе | Функция SQLDescribeCol |
Выполнение инструкции SQL | Функция SQLExecDirect |
Выполнение подготовленной инструкции SQL | Функция SQLExecute |
Получение блока данных или прокрутка результирующий набор | Функция SQLFetchScroll |
Получение одной строки или блока данных в направлении только для пересылки | Функция SQLFetch |
Извлечение части или всех столбцов данных | Функция SQLGetData |
Подготовка инструкции SQL для выполнения | Функция SQLPrepare |
Настройка параметров прокрутки курсора | Функция SQLSetStmtAttr |