Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс лекций СБД.doc
Скачиваний:
23
Добавлен:
13.11.2019
Размер:
1.94 Mб
Скачать
      1. Уровни соответствия

Перед создателями стандарта ODBC стояла дилемма. Если они зададут для стандарта минимальный уровень совместимости, поддержать этот стандарт будут в состоянии многие производители. Однако при этом стандарт будет представлять только малую долю всей мощи и выразительности, которыми обладают ODBC и SQL. С другой стороны, если стандарт будет предписывать очень высокий уровень совместимости, то лишь немногие производители смогут поддерживать его, а это лишит его ценности. Чтобы справиться с этой дилеммой, были определены уровни соответствия стандарту. Уровни соответствия определяются по отношению к SQL и по отношению к ODBC.

Уровень соответствия odbc

Уровень соответствия ODBC (ODBC conformance level) описывает то, какие возможности и функции доступны через интерфейс прикладных программ (API) драйвера. Интерфейс прикладных программ драйвера – это набор функций, которые может вызывать приложение для обращения за услугами источника данных. Стандартом предусмотрены три уровня три уровня соответствия ODBC. На практике почти все драйверы обеспечивают по крайней мере первый уровень соответствия, поэтому базовый уровень не представляет особого интереса.

УРОВНИ СООТВЕТСТВИЯ ODBC

Базовый уровень (Core API):

  • соединение с источниками данных;

  • подготовка и выполнение SQL-операторов;

  • получение данных из набора результатов;

  • сохранение или откат транзакций;

  • получение информации об ошибках.

Первый уровень (Level 1 API):

  • соответствие ODBC на базовом уровне;

  • соединение с источниками данных, содержащих информацию, специфичную для драйвера;

  • отправка и прием частичных результатов;

  • получение информации из каталога;

  • получение информации о параметрах, возможностях и функциях драйвера.

Второй уровень (Level 2 API):

  • соответствие ODBC на базовом и первом уровнях;

  • обзор возможных соединений и источников данных;

  • получение «родной» формы SQL;

  • вызов библиотеки преобразований;

  • обработка двунаправленных курсоров.

Приложение может вызвать драйвер, чтобы определить, какой уровень соответствия ODBC он предоставляет. Если приложение требует такого уровня соответствия, который не обеспечивается драйвером, оно может корректно прервать сеанс и выдать пользователю соответствующее сообщение. Можно написать приложение так, чтобы оно использовало функции более высокого уровня соответствия, если они доступны, а если нет, реализовывало их самостоятельно.

Например, драйверы второго уровня должны предоставлять двунаправленный курсор. Приложение можно запрограммировать так, чтобы оно использовало курсоры, если они доступны, а если нет, реализовывало бы отсутствующую функцию собственными средствами, используя предложения WHERE с сильными ограничениями. Это гарантирует, что за один прием приложению будет возвращаться лишь небольшое количество строк, которые будут обрабатываться с помощью курсора, поддерживаемого самим приложением. Во втором случае производительность, скорее всего, будет ниже, зато, по крайней мере, приложение будет способно успешно выполнить задачу.

Уровни соответствия SQL

Уровни соответствия SQL (SQL conformance levels) описывают то, какие SQL-операторы, выражения и типы данных может обрабатывать драйвер. Стандартом определены также три уровня соответствия. Возможности минимального синтаксиса SQL весьма ограничены, и большинство драйверов поддерживают по крайней мере базовый синтаксис.

УРОВНИ СООТВЕТСТВИЯ SQL

Минимальный синтаксис (Minimum SQL Grammar):

  • CREATE TABLE, DROP TABLE;

  • простой оператор SELECT (без вложенных запросов);

  • INSERT, UPDATE, DELETE;

  • простые выражения (A > В + С);

  • типы данных CHAR, VARCHAR, LONGCHAR.

Базовый синтаксис (Core SQL Grammar):

  • минимальный синтаксис;

  • ALTER TABLE, CREATE INDEX, DROP INDEX;

  • CREATE VIEW, DROP VIEW;

  • GRANT, REVOKE;

  • полный синтаксис оператора SELECT (включая вложенные запросы);

  • встроенные функции: SUM, COUNT, MAX, MIN, AVG;

  • типы данных DECIMAL, NUMERIC, SMALLINT, REAL, FLOAT, DOUBLE PRECISION.

Расширенный синтаксис (Extended SQL Grammar):

  • базовый синтаксис;

  • внешние соединения;

  • UPDATE и DELETE с использованием позиции курсора;

  • скалярные функции: SUBSTRING, ABS;

  • переменные для даты, времени и временная метка;

  • пакетная обработка SQL-операторов;

  • хранимые процедуры.

Как и в случае с уровнями соответствия ODBC, приложение может вызвать драйвер, чтобы определить, какой уровень соответствия SQL он поддерживает. Имея эту информацию, приложение может затем определить, какие SQL-операторы можно передавать на выполнение драйверу. Если необходимо, приложение может прервать сеанс или использовать альтернативные, менее мощные способы получения данных.