Соответствие основного интерфейса
Все драйверы ODBC должны поддерживать по крайней мере соответствие интерфейсам на уровне ядра. Так как функции на уровне Core требуются большинству универсальных совместимых приложений, драйвер может работать с такими приложениями. Функции на уровне Core также соответствуют функциям, определенным в спецификации ISO CLI, и неоптимальным функциям, определенным в спецификации Open Group CLI. Драйвер ODBC, соответствующий интерфейсу уровня Ядра, позволяет приложению выполнять все перечисленные ниже действия.
Выделите и освободите все типы дескрипторов, вызвав SQLAllocHandle и SQLFreeHandle.
Используйте все формы функции SQLFreeStmt .
Привязка столбцов результирующих наборов путем вызова SQLBindCol.
Обработка динамических параметров, включая массивы параметров, только во входном направлении путем вызова SQLBindParameter и SQLNumParams. (Параметры в направлении вывода являются функцией 203 в соответствии с интерфейсом уровня 2.)
Укажите смещение привязки.
Используйте диалоговое окно обработки данных при выполнении, включающее вызовы SQLParamData и SQLPutData.
Управление курсорами и именами курсоров путем вызова SQLCloseCursor, SQLGetCursorName и SQLSetCursorName.
Получите доступ к описанию (метаданным) результирующих наборов, вызвав SQLColAttribute, SQLDescribeCol, SQLNumResultCols и SQLRowCount. (Использование этих функций в столбце с номером 0 для получения метаданных закладки является функцией 204 в соответствии с интерфейсом уровня 2.)
Запросите словарь данных, вызвав функции каталога SQLColumns, SQLGetTypeInfo, SQLStatistics и SQLTables.
Драйвер не требуется для поддержки составных имен таблиц и представлений базы данных. (Дополнительные сведения см. в разделе Функция 101 в разделе Соответствие интерфейса уровня 1 и функция 201 в разделе Соответствие интерфейса уровня 2.) Однако некоторые функции спецификации SQL-92, такие как квалификация столбцов и имена индексов, синтаксически сравнимы с многокомпонентным именованием. Настоящий список функций ODBC не предназначен для введения новых возможностей в эти аспекты SQL-92.
Управляйте источниками данных и подключениями, вызывая SQLConnect, SQLDataSources, SQLDisconnect и SQLDriverConnect. Получите сведения о драйверах, независимо от того, какой уровень ODBC они поддерживают, вызвав SQLDrivers.
Подготовьте и выполните инструкции SQL, вызвав SQLExecDirect, SQLExecute и SQLPrepare.
Извлеките одну строку результирующих наборов или несколько строк только в направлении вперед, вызвав SQLFetch или вызвав SQLFetchScroll с аргументом FetchOrientation , равным SQL_FETCH_NEXT.
Получите несвязанный столбец по частям, вызвав SQLGetData.
Получите текущие значения всех атрибутов, вызвав SQLGetConnectAttr, SQLGetEnvAttr и SQLGetStmtAttr, и задайте для всех атрибутов значения по умолчанию и задайте для некоторых атрибутов значения, отличные от значений, вызвав SQLSetConnectAttr, SQLSetEnvAttr и SQLSetStmtAttr.
Управляйте определенными полями дескрипторов, вызывая SQLCopyDesc, SQLGetDescField, SQLGetDescRec, SQLSetDescField и SQLSetDescRec.
Получите диагностические сведения, вызвав SQLGetDiagField и SQLGetDiagRec.
Обнаружение возможностей драйвера путем вызова SQLGetFunctions и SQLGetInfo. Кроме того, определите результат любых подстановок текста, выполненных в инструкции SQL перед его отправкой в источник данных, вызвав SQLNativeSql.
Используйте синтаксис SQLEndTran для фиксации транзакции. Драйвер уровня ядра не должен поддерживать истинные транзакции; Поэтому приложение не может указать SQL_ROLLBACK или SQL_AUTOCOMMIT_OFF для атрибута подключения SQL_ATTR_AUTOCOMMIT. (Дополнительные сведения см. в разделе Функция 109 в разделе Соответствие интерфейса уровня 2.)
Вызовите SQLCancel , чтобы отменить диалоговое окно обработки данных при выполнении, а в многопоточных средах — отменить функцию ODBC, выполняемую в другом потоке. Соответствие интерфейса на уровне ядра не требует поддержки асинхронного выполнения функций или использования SQLCancel для отмены асинхронной функции ODBC. Ни платформа, ни драйвер ODBC не должны быть многопоточные, чтобы драйвер одновременно проводил независимые действия. Однако в многопоточных средах драйвер ODBC должен быть потокобезопасн. Сериализация запросов из приложения — это соответствующий способ реализации этой спецификации, даже если это может привести к серьезным проблемам с производительностью.
Получите SQL_BEST_ROWID идентифицирующие строки столбцы таблиц, вызвав SQLSpecialColumns. (Поддержка SQL_ROWVER — это функция 208 в соответствии с интерфейсом уровня 2.)
Важно!
Драйверы ODBC должны реализовывать функции на уровне соответствия интерфейса Core.