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.