Чтение онлайн

ЖАНРЫ

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

* В главе 23 рассматриваются синтаксис и вопросы определения наборов, которые требуют сортировки или группирования, а также запросы, отыскивающие строки в нескольких таблицах без использования соединений.

* Глава 24 содержит описание и использование просмотров, а также других наследуемых объектов типа таблиц.

Возможности встраиваемого языка (ESQL)

Некоторые реляционные системы управления базами данных, включая Firebird, предоставляют возможность непосредственного включения операторов SQL в модули, написанные на языке программирования третьего поколения. Стандарт предоставляет концептуальные алгоритмы, по которым будет выполняться программирование приложений,

но не задает никаких правил реализации.

Возможность программирования приложений со встроенным SQL в Firebird включает подмножество операторов, подобных операторам SQL, и конструкции, которые могут быть включены в исходный код программы для обработки препроцессором перед компиляцией кода. Конструкции встроенного языка SQL называются встроенным SQL (ESQL). Операторы ESQL не могут генерироваться динамически.

ESQL недопустим в хранимых процедурах и триггерах, а процедурный язык (PSQL) недопустим во встроенном SQL. ESQL может выполнять хранимые процедуры. ESQL используется в программах, написанных на традиционных языках программирования, таких как С или COBOL. Каждому оператору ESQL должен предшествовать SQL-оператор EXEC. Препроцессор GPRE преобразует операторы ESQL в структуры данных используемого языка программирования и вызовы сервера Firebird.

Более подробную информацию см. в "Embedded SQL" (Встраиваемый SQL) в документации Borland по InterBase 6.x или EmbedSQL.pdf в соответствующем комплекте электронной документации [63] .

Динамический в сравнении со статическим SQL

Операторы SQL, включенные в код и обработанные препроцессором, иногда называются статическим SQL. В отличие от них операторы, которые генерируются клиентским приложением и передаются для выполнения на сервер во время работы, называются динамическим SQL (DSQL).

63

Рекомендую обратиться наТам можно найти перевод на русский язык некоторых книг из документации фирмы Borland по InterBase 7.1.
– Прим. пе-

Если вы не пишете код для приложений ESQL, вы используете DSQL. Операторы, выполняемые в утилите интерактивного SQL (isql) или в другой интерактивной утилите, являются операторами DSQL, таким же образом они обрабатываются в клиентских приложениях, которые используют напрямую или опосредованно API (через драйверы доступа к базе данных, такие как ODBC, JDBC или BDE).

В приложениях с Embedded SQL статический SQL позволяет передавать запросы в API Firebird, вместо того, чтобы использовать препроцессор и макросы для формирования структур API. Поскольку весь запрос полностью подготовлен, он может выполняться быстрее динамических операторов, которые передаются серверу, где выполняется их синтаксический анализ и подготовка во время выполнения программы.

Разновидности подмножеств языка

Преднамеренно или случайно существуют некоторые незначительные отличия между подмножествами языка SQL в Firebird.

* Формат некоторых обычных операторов SQL может слегка изменяться в статическом и динамическом вариантах SQL.

* Терминаторы операторов могут изменяться в разных подмножествах языка:

• операторы PSQL и ESQL завершаются точкой с запятой;

• в операторах DSQL, передаваемых через структуры API, терминаторы отсутствуют;

• операторы DSQL, вводимые в интерактивной утилите запросов isql требуют терминаторов, которые могут быть установлены при использовании SET TERM в любой печатаемый символ из первых 127 символьного подмножества ASCII.

Интерактивный SQL (ISQL)

Инструмент интерактивных запросов isql использует

операторы DSQL вместе с двумя подмножествами расширенных команд (группы SET xxx и SHOW xxx), которые позволяют интерактивно выполнить некоторые установки и запросы к схеме соответственно. Некоторые команды SET могут быть также включены в скрипты определения данных (скрипты DDL для пакетного выполнения в isql) и в Embedded SQL.

Подробную информацию о подмножестве языка isql см. в главе 37.

Процедурный язык (PSQL)

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

Те реляционные СУБД, которые поддерживают программирование на сервере, обычно предоставляют форматы и синтаксис, подобные операторам SQL, для расширения SQL. Каждый разработчик СУБД свободен предоставлять свои собственные варианты таких конструкций. Обычно такие модули в базе данных называются хранимыми процедурами.

Firebird предоставляет такие конструкции в виде процедурного языка (иногда называемого PSQL), который является набором расширений SQL, используемых программистами вместе с вариантом языка ESQL для написания исходных кодов для хранимых процедур и триггеров. Расширения PSQL включают управление потоком выполнения, условные выражения и средства обработки ошибок. Язык включает уникальную возможность генерации многострочных выходных наборов, к которым может быть осуществлен прямой доступ с использованием операторов SELECT.

Из языка исключены некоторые конструкции SQL, в частности все операторы DDL. При этом в Firebird 1.5 и выше в PSQL поддерживается синтаксис EXECUTE STATEMENT для выполнения команд DSQL, включающих некоторые операторы DDL.

PSQL для хранимых процедур и триггеров подробно описывается в части VII.

Диалекты SQL

В Firebird каждый клиент и база данных имеют диалект SQL, атрибут, указывающий серверу, как интерпретировать возможности и элементы, которые реализованы по- разному в базах данных Borland InterBase до версии 6.

Диалект позволяет серверу Firebird распознавать, принимать и корректно обрабатывать более ранние возможности и элементы баз данных (диалект 1), получать доступ к этим старым данным для их преобразования в новые возможности и элементы (диалект 2) или использовать полный набор возможностей, элементов и правил Firebird для конвертированных или вновь создаваемых баз данных (диалект 3).

Возможно создание новой базы данных в Firebird диалекта 1 или диалекта 3. Не рекомендуется создавать новые базы в диалекте 1, поскольку, в конечном счете, прекратится его поддержка. Невозможно создание базы данных диалекта 2, потому что диалект 2 предназначен для конвертирования баз данных диалекта 1 в диалект 3. Диалект 2 может быть применен только к клиентскому соединению.

Ресурсы SQL

Приложение 1 содержит алфавитный список описаний внешних функций.

Используйте алфавитный указатель в конце этой книги для поиска неизвестных терминов.

Книги

Если предыдущие ваши "контакты" с SQL были минимальными, хорошая книга по SQL-92 будет бесценной. Следующий список (который не является исчерпывающим) может быть вам полезен.

Joe Celko пишет по SQL книги, предназначенные для решения проблем. Вот некоторые из них: "Joe Celko's SQL For Smarties: Advanced SQL Programming", "Joe Celko's Data and Databases: Concepts in Practice", и "Joe Celko's SQL Puzzles and Answers". Здесь описывается главным образом стандартный SQL, может быть с некоторым уклоном в Oracle.

Поделиться с друзьями: