Поделиться через


Проверки значений аргументов

Диспетчер драйверов проверяет следующие типы аргументов. Если иное не указано, диспетчер драйверов возвращает SQL_ERROR для ошибок в значениях аргументов.

  • Дескрипторы среды, подключения и команды обычно не могут быть NULL-указателями. Диспетчер драйверов возвращает SQL_INVALID_HANDLE при обнаружении null-дескриптора.

  • Обязательные аргументы указателя, такие как OutputHandlePtr в SQLAllocHandle и CursorName в SQLSetCursorName, не могут быть пустыми указателями.

  • Флаги параметров, которые не поддерживают значения, относящиеся к драйверу, должны иметь допустимое значение. Например, операция в SQLSetPos должна быть SQL_POSITION, SQL_REFRESH, SQL_UPDATE, SQL_DELETE или SQL_ADD.

  • Флаги параметров должны поддерживаться в версии ODBC, поддерживаемой драйвером. Например, InfoType в SQLGetInfo не может быть SQL_ASYNC_MODE (появилась в ODBC 3.0) при вызове драйвера ODBC 2.0.

  • Число столбцов и параметров должно быть больше 0 или равно 0 в зависимости от функции. Драйвер должен проверить верхний предел этих значений аргументов на основе текущего результирующего набора или инструкции SQL.

  • Аргументы длины или индикатора и аргументы длины буфера данных должны содержать соответствующие значения. Например, аргумент, указывающий длину имени таблицы в SQLColumns (NameLength3), должен быть SQL_NTS или значение больше 0; BufferLength в SQLDescribeCol должен быть больше или равен 0. Драйвер может также проверить эти аргументы. Например, можно проверить, что NameLength3 меньше или равно максимальной длине имени таблицы в источнике данных.