164
компании Microsoft и входит также в стандарт X/OPEN. Эти стандарты
de facto являются официальным одобрением SQL, и именно они ускори-
ли завоевание им рынка.
Многие из членов комитетов по стандартизации ANSI и ISO пред-
ставляли фирмы-поставщики различных СУБД, в каждой из которых
был реализован собственный диалект SQL. Как и диалекты человеческо-
го языка, диалекты SQL были в основном похожи друг на друга, однако
несовместимы в деталях. Во многих случаях комитет просто игнориро-
вал существующие различия и не стандартизировал некоторые части
языка, определив, что они реализуются по усмотрению разработчика.
Этот подход позволил объявить большое число реализаций SQL совмес-
тимыми со стандартом, однако сделал сам стандарт относительно сла-
бым.
Чтобы заполнить эти пробелы, комитет ANSI продолжил свою ра-
боту и создал проект нового, более жесткого стандарта SQL2. В отличие
от стандарта 1989 года, проект SQL2 предусматривал возможности, вы-
ходящие за рамки таковых, уже существующих в реальных коммерче-
ских продуктах.
Перечислим эти отличия SQL2.
Коды ошибок. В стандарте SQL2 определены стандартные коды
ошибок, которые возвращают операторы SQL при возникновении оши-
бок.
Типы данных. В стандарте SQL2 упомянуты многие стандартные
типы данных (например, символьные строки переменной длины, дата и
время, а также денежные единицы), однако отсутствуют "новые" типы
данных, такие как графические и мультимедийные объекты.
Системные таблицы. В стандарте SQL-89 умалчивается о систем-
ных таблицах, в которых содержится информация о структуре самой ба-
зы данных. Поэтому каждый поставщик создавал собственные систем-
ные таблицы, и их структура отличается даже в четырех реализациях
SQL компании IBM. В SQL2 системные таблицы стандартизированы.
Интерактивный SQL. В стандарте SQL-89 определен только про-
граммный SQL, используемый прикладной программой, но не интерак-
тивный SQL. Например, оператор SELECT, предназначенный для вы-
полнения запросов к базе данных в интерактивном режиме, в стандарте
отсутствует.
Программный интерфейс. В стандарте SQL2 определен интерфейс
встроенного SQL для некоторых языков программирования, но не ин-
терфейс вызова функций.
Динамический SQL. В стандарте SQL-89 не описаны элементы
SQL, необходимые для разработки приложений общего назначения, та-
ких как генераторы отчетов и программы создания и выполнения запро-
сов. Однако эти элементы, известные под названием динамический SQL,
имеются почти во всех СУБД и в различных системах значительно от-
личаются. В стандарт SQL2 входит раздел динамического SQL.