ВВЕДЕНИЕ

«Динамический SQL» состоит из множества возможностей встроенного SQL, предусмотренных специально для конструирования интерактивных приложений, где под «интерактивным приложением» понимается программа, которая написана для поддержки обращения к базе данных конечного пользователя, работающего на интерактивном терминале. Сами предложения динамического SQL не могут вводиться в интерактивном режиме— они доступны только во встроенной обстановке (В обстановке включающего языка.— Примеч. пер.). Таким образом, тема этой главы в некоторой степени специализированная. В знании изложенного в ней материала нуждаются, главным образом, лишь те, кто занимается написанием интерактивных приложений. Другие читатели, возможно, пожелают вообще пропустить эту главу, по крайней мере при первом чтении.

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

1. Прием команды с терминала.

2. Анализ этой команды.

3. Обращение к базе данных с помощью соответствующих предложений языка SQL.

4. Возврат на терминал сообщения и/или результатов. Если множество команд, которые может принимать программа, сравнительно невелико, как, вероятно, в случае программы бронирования мест на авиалиниях, то и множество возможных предложений SQL, выдаваемых программой, также будет, по-видимому, небольшим и может быть «зашито» в программу. В этом случае указанные выше шаги 2 и 3 будут состоять просто из логической проверки введенной команды и последующего перехода к той части программы, которая выдает заранее предусмотренные предложения или группы предложений SQL. С другой стороны, если для программы имеется большое количество вариантов входных данных, то, вероятно, не удастся заранее предусмотреть и «зашить» в программу предложения SQL для каждой возможной команды. По-видимому, вместо этого гораздо более удобно динамически формировать предложения SQL с тем, чтобы далее также динамически связывать их и исполнять. Для оказания помощи в этом процессе и предусмотрены средства динамического SQL.

Между прочим, только что описанный процесс—это как раз то, что происходит, когда сами предложения SQL вводятся в интерактивном режиме с помощью DB2I и QMF (если нужно вспомнить смысл этих двух обозначений, см. раздел 1.3). В обоих случаях исполняется интерактивное приложение, которое готово принимать чрезвычайно широкое многообразие входных данных, а именно любое правильное (или неправильное!) предложение SQL. Для формирования подходящих предложений встроенного SQL, соответствующих его входным данным, их связывания и исполнения, а также для возвращения сообщений и результатов на терминал, это приложение использует возможности динамического SQL.

Если динамическому связыванию и исполнению должно подвергнуться предложение SELECT, принимаются во внимание некоторые специальные соображения. Дело в том, что, как и в обычном встроенном SQL, выборка данных в случае динамического SQL является более сложной и требует больше работы со стороны пользователя. Поэтому сначала в разделе 12.2 рассматриваются другие, более простые предложения, а далее раздел 12.3 специально посвящается проблеме предложений SELECT.