Соотношение стандарта ODBC и стандарта интерфейса уровня вызовов (CLI)
Как уже отмечалось выше, открытый интерфейс доступа к базам данных фирмы Microsoft основан на следующих стандартах:
- спецификация X/Open CAE1) (Specification "Data Management: SQL Call-Level Interface (CLI)");
- спецификация ISO2) /IEC 9075-3:1995 (E) (Call-Level Interface (SQL/CLI)).
В настоящее время фирма Microsoft поддерживает версию 3.x ODBC API. Приложения, написанные на основе спецификации X/Open и ISO CLI, будут правильно работать с ODBC-драйверами версии 3.x или драйверами "согласованного стандарта" в том случае, если они компилируются с заголовочными файлами ODBC версии 3.x и линкуются с ODBC 3.x библиотеками, а доступ к ODBC-драйверу получают через менеджер драйверов ODBC 3.x. Аналогично, что и сами драйверы 3.x, написанные на основе спецификации X/Open и ISO CLI, будут правильно работать с приложениями при соблюдении этих же условий.
Драйвер ODBC 3.x всегда поддерживает все возможности, используемые приложением "согласованного стандарта", а приложение ODBC 3, которое использует только возможности, предоставляемые ISO CLI, и обязательные средства, описываемые X/Open CLI, всегда будет работать с драйвером "согласованного стандарта".
В дополнение к интерфейсу, специфицированному в стандартах ISO/IEC и X/Open CLI, ODBC реализует следующие возможности:
- извлечение нескольких строк (блочная выборка) за один вызов функции;
- связывание с массивом параметров;
- поддержка закладок, включая выборку посредством закладки, закладки переменной длины, блочное обновление и удаление посредством отмеченных операций над непоследовательными строками;
- построчное связывание (row-wise binding);
- связывание со смещением (binding offsets);
- поддержка пакетов SQL-операторов как в хранимых процедурах, так и в виде последовательности отдельных SQL-операторов, выполняемых при вызове функций SQLExecute и SQLExecDirect;
- определение точного или приблизительного числа строк курсора;
- применение операции позиционированного обновления и удаления и пакетных удалений и обновлений с использованием функции SQLSetPos;
- поддержка функций каталога, позволяющих получать информацию из схемы базы данных (системных таблиц);
- библиотеки преобразования для кодовых страниц;
- асинхронное выполнение;
- поддержка хранимых процедур, включая escape-последовательности, механизм связывания выходных параметров, функции каталога;
- более продвинутые возможности соединения, включающие поддержку атрибутов соединения и просмотра атрибутов.
Aey niaeaniaaiiinoe ni noaiaa?oii ISO CLI e X/Open CLI a caaieiai?iuo oaeeao niaa??aony inaaaiieiu cia?aiee, eniieucoaiuo a ODBC API. Oae, a inaaaiieiao "MAX" ?anoe?aii ai "MAXIMUM", "LEN" ai "LENGTH", "MULT" ai "MULTIPLE", "OJ" ai "OUTER_JOIN", a "TXN" ai "TRANSACTION". Iai?eia?:
SQL_MAX_CATALOG_NAME_LEN | SQL_MAXIMUM_CATALOG_NAME_LENGTH |
SQL_MAX_COLUMN_NAME_LEN | SQL_MAXIMUM_COLUMN_NAME_LENGTH |
SQL_MAX_COLUMNS_IN_GROUP_BY | SQL_MAXIMUM_COLUMNS_IN_GROUP_BY |
SQL_MAX_COLUMNS_IN_ORDER_BY | SQL_MAXIMUM_COLUMNS_IN_ORDER_BY |
SQL_MAX_COLUMNS_IN_SELECT | SQL_MAXIMUM_COLUMNS_IN_SELECT |
SQL_MAX_COLUMNS_IN_TABLE | SQL_MAXIMUM_COLUMNS_IN_TABLE |
SQL_MAX_CONCURRENT_ACTIVITIES | SQL_MAXIMUM_CONCURRENT_ACTIVITIES |
SQL_MAX_CURSOR_NAME_LEN | SQL_MAXIMUM_CURSOR_NAME_LENGTH |
SQL_MAX_DRIVER_CONNECTIONS | SQL_MAXIMUM_DRIVER_CONNECTIONS |
SQL_MAX_IDENTIFIER_LEN | SQL_MAXIMUM_IDENTIFIER_LENGTH |
SQL_MAX_SCHEMA_NAME_LEN | SQL_MAXIMUM_SCHEMA_NAME_LENGTH |
SQL_MAX_STATEMENT_LEN | SQL_MAXIMUM_STATEMENT_LENGTH |
SQL_MAX_TABLE_NAME_LEN | SQL_MAXIMUM_TABLE_NAME_LENGTH |
SQL_MAX_TABLES_IN_SELECT | SQL_MAXIMUM_TABLES_IN_SELECT |
SQL_MAX_USER_NAME_LEN | SQL_MAXIMUM_USER_NAME_LENGTH |
SQL_MULT_RESULT_SETS | SQL_MULTIPLE_RESULT_SETS |
SQL_OJ_CAPABILITIES | SQL_OUTER_JOIN_CAPABILITIES |
SQL_TXN_CAPABLE | SQL_TRANSACTION_CAPABLE |
SQL_TXN_ISOLATION_OPTION | SQL_TRANSACTION_ISOLATION_OPTION |
Aey niaeaniaaiiinoe ni noaiaa?oii ISO CLI e X/Open CLI a caaieiai?iuo oaeeao niaa??aony inaaaiieiu cia?aiee, eniieucoaiuo a ODBC API. Oae, a inaaaiieiao "MAX" ?anoe?aii ai "MAXIMUM", "LEN" ai "LENGTH", "MULT" ai "MULTIPLE", "OJ" ai "OUTER_JOIN", a "TXN" ai "TRANSACTION". Iai?eia?:
SQL_MAX_CATALOG_NAME_LEN | SQL_MAXIMUM_CATALOG_NAME_LENGTH |
SQL_MAX_COLUMN_NAME_LEN | SQL_MAXIMUM_COLUMN_NAME_LENGTH |
SQL_MAX_COLUMNS_IN_GROUP_BY | SQL_MAXIMUM_COLUMNS_IN_GROUP_BY |
SQL_MAX_COLUMNS_IN_ORDER_BY | SQL_MAXIMUM_COLUMNS_IN_ORDER_BY |
SQL_MAX_COLUMNS_IN_SELECT | SQL_MAXIMUM_COLUMNS_IN_SELECT |
SQL_MAX_COLUMNS_IN_TABLE | SQL_MAXIMUM_COLUMNS_IN_TABLE |
SQL_MAX_CONCURRENT_ACTIVITIES | SQL_MAXIMUM_CONCURRENT_ACTIVITIES |
SQL_MAX_CURSOR_NAME_LEN | SQL_MAXIMUM_CURSOR_NAME_LENGTH |
SQL_MAX_DRIVER_CONNECTIONS | SQL_MAXIMUM_DRIVER_CONNECTIONS |
SQL_MAX_IDENTIFIER_LEN | SQL_MAXIMUM_IDENTIFIER_LENGTH |
SQL_MAX_SCHEMA_NAME_LEN | SQL_MAXIMUM_SCHEMA_NAME_LENGTH |
SQL_MAX_STATEMENT_LEN | SQL_MAXIMUM_STATEMENT_LENGTH |
SQL_MAX_TABLE_NAME_LEN | SQL_MAXIMUM_TABLE_NAME_LENGTH |
SQL_MAX_TABLES_IN_SELECT | SQL_MAXIMUM_TABLES_IN_SELECT |
SQL_MAX_USER_NAME_LEN | SQL_MAXIMUM_USER_NAME_LENGTH |
SQL_MULT_RESULT_SETS | SQL_MULTIPLE_RESULT_SETS |
SQL_OJ_CAPABILITIES | SQL_OUTER_JOIN_CAPABILITIES |
SQL_TXN_CAPABLE | SQL_TRANSACTION_CAPABLE |
SQL_TXN_ISOLATION_OPTION | SQL_TRANSACTION_ISOLATION_OPTION |