Диалекты SQL 29
Постоянно работающим с SQL необходимо быть в курсе как старых (SQL92), так
и новых (SQL3) классов, так как оба варианта еще используются при обращении
к SQLоператорам.
Диалекты SQL
Постоянно эволюционирующий SQL породил множество диалектов, используе
мых на разнообразных платформах. Причиной появления диалектов является
то, что пользователям СУБД необходимы новые функции раньше, чем ANSI вы
пустит новый стандарт. Иногда научное и исследовательское сообщество добав
ляет в стандарт новые возможности под давлением со стороны конкурирующих
на рынке технологий. Например, многие разработчики расширяют возможно
сти программирования в своих СУБД при помощи Java (как в случае с DB2, Ora
cle и Sybase) или VBScript (в случае Microsoft). В будущем разработчики будут
использовать эти языки совместно с SQL для разработки SQLпрограмм.
Многие диалекты содержат условные операторы (такие как IF…THEN), возмож
ности управления потоком выполнения (циклы WHILE), переменные и возмож
ности обработки ошибок. Так как всех этих возможностей не было в стандарте
на момент возникновения потребности в них со стороны пользователей, то раз
работчики предложили свои собственные команды и синтаксис. В реальности,
у некоторых разработчиков из ранних 80х есть различия в синтаксисе даже эле
ментарных команд (например, SELECT), так как их реализации предшествова
ли стандарту. ANSI в данное время уточняет стандарт для устранения этих несо
ответствий.
В некоторых диалектах представлена функциональность, делающая их более
близкими к языкам процедурного программирования. К примеру, процедурные
возможности этих диалектов SQL могут содержать команды обработки ошибок,
команды управления потоком выполнения, условные команды, переменные, мас
сивы и многое другое. В этой книге мы все эти возможности будем называть диа
лектами, хотя они, по сути, являются процедурными расширениями SQL. Пакет
SQL/PSM из стандарта описывает различные возможности, связанные с храни
мыми процедурами, и содержит многие расширения, предлагаемые диалектами.
Вот несколько распространенных диалектов:
PL/SQL
Используется в Oracle. Сокращение обозначает Procedural Language/SQL.
Диалект во многом похож на язык программирования Ada.
Transact0SQL
Используется в Microsoft SQL Server и Sybase Adaptive Server. С тех пор как
в начале 1990х Microsoft и Sybase начали развивать разные платформы, их
реализации TransactSQL также начали отличаться.
PL/pgSQL
Расширение SQL, реализованное в PostgreSQL. Сокращение расшифровыва
ется как Procedural Language/PostgreSQL.
Пользователи, планирующие плотно работать с одной СУБД, должны изучить
все особенности диалекта, используемого этой платформой.