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