Главная » Просмотр файлов » Введение в системы БД

Введение в системы БД (542480), страница 30

Файл №542480 Введение в системы БД (Введение в системы БД) 30 страницаВведение в системы БД (542480) страница 302015-08-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 30)

4.6. Внедрение $01.-операторов В большинстве ЯЭЬ-продуктов операторы языка Я()Ь могут выполняться как непосредственно (т.е, интерактивно, с подключенного терминала), так и в виде части прикладной программы (т.е. ЯЯЬ-операторы могут быть внедренными, а значит, могут смешиваться с 126 Часть з Основные понятия операторами базового языка этой программы). Приложения, использующие внедренные БОЬ-операторы, могут быть написаны на многих базовых языках: СОВОЬ, Зача, Р1Л и т.д.л Рассмотрим особенности технологии внедрения БОЬ-операторов более подробно.

Фундаментальный принцип, лежащий в основе технологии внедрения БОЬ- операторов, мы будем называть принципом двухрежимности. Он заключается в том, что любое БД/:выражение, которое можно использовать интерактивно, можно применять и в прикладной программе. Конечно, сушествует множество различий в деталях между интерактивными БОЬ-операторами и их внедренными аналогами. В частности, операции выборки требуют сушественной дополнительной обработки в вычислительной среде базового языка (подробности приводятся ниже в этом же разделе).

Тем не менее сам принцип двухрежимности всегда соблюдается. (Обратное правило, между прочим, не верно, т.е. существует несколько внедряемых БО -операторов, которые не могут использоваться интерактивно, в чем мы вскоре убедимся.) Прежде чем начать обсуждение конкретных внедряемых Б >Ь-операторов, необходимо обсудить некоторые детали. Большинство из них иллюстрируется фрагментом программы, представленным на рис. 4.3. (Для закрепления наших представлений будем считать, что базовым языком является РЬ/1. Большинство приводимых примеров транслируется на другие базовые языки лишь с незначительными изменениями.) ЕХЕС ВОВ ВЕО1Н ОЕСВАКЕ ЯЕСТ10К ОСЬ ВОВВТАТЕ СНАК(5) 1 001 Р() СНАК(б) 0СВ ИЕ1ОНТ Р1ХЕО ОЕС1МАВ(5,1) 1 ЕХЕС В01 ЕКО 0ЕСВАКЕ ВЕСТ10К Р() = 'Р2' 1 )* например '/ ЕХЕС ВОВ НЕВЕСТ Р.ИЕ1ОНТ 1КТО :ИЕ16НТ РВОМ Р ИНЕКЕ Р,Р() = :Р() 1 1Р ВОВВТАТЕ и '00000' ТНЕК ...

1 )* ИЕ16НТ = <вмбираемое значение> '/ ЕВЯЕ ... 1 /ь возникла какая-то исключительная ситуация */ Рис. 4 3. Фрагмент программы на языке Р/// с внедренными операторами языка БДЬ Рассмотрим все по порядку. 1. Внедренные БОЬ-операторы предваряются инструкцией ЕХЕС Б01ь так что их легко отличить от других операторов базового языка, и заканчиваются специальным завершающим символом (точка с запятой ";" для языка РЬ/1).

4 Стандарт языка БДЛ [4.22) в настоящее время поддерживает языки Аг(а, С, СОВОК Ростан, М (раньше он назывался М((МБ/, Ровса/ и Р/г/. Требование поддержки языка ./ача на время написания книги еще отсутствовало, но должно было быть добавлено в ближайшее время (подробности приводятся в /4.б/, а также в приложении БА причем некоторые продукты уже поддерживают язык ./ача. и7 Глава 4.

Введение в язык ЯДА 2. Выполняемый БЯЬ-оператор (далее до конца этого раздела уточнение "внедренный" обычно будет опускаться) может быть в программе везде, где могут быть выполняемые операторы базового языка, Обратите внимание на уточнение "выполняемые": в отличие от интерактивного режима использования языка БОЬ, режим внедрения БОЬ-операторов подразумевает включение в программу отдельных БОЬ-операторов, которые являются чисто декларативными, а не выполняемыми. Например, оператор ОВСОВЕ СОННО — это невыполняемый оператор (подробности приводятся в разделе "Операции, использующие курсоры"); таковыми не являются и операторы ВЕО1Н и ЕНО ОЕСййВЕ ЯЕСТ1ОН (см.

п. 5 этого списка), а также оператор ННЕНЕЧЕВ (см. п. 9). 3. БОЬ-операторы могут включать ссылки на базовые переменные (т.е. переменные базового языка). Подобные ссылки должны включать префикс в виде двоеточия, предназначенный для отличия их от имен столбцов Б()Ь-таблиц. Базовые переменные могут применяться во внедренных БОЬ-операторах везде, где в интерактивном языке БОЬ могут использоваться литералы. Они могут также находиться в предложении 1НТО операторов ЯЕЬЕСТ (см. п. 4) и ГЕТСН (подробности — в разделе "Операции, использующие курсоры"), определяющих результирующие переменные для размешения результатов выборки данных.

4. Обратите внимание на предложение 1НТО оператора БЕЗВЕСТ, представленного на рис. 4.3. Назначение этого предложения (как только что отмечалось) — указать результируюшие (целевые) переменные, в которые будут возврашены выбранные значения. Каждая ~'-я целевая переменная, указанная в предложении 1НТО, соответствует йму извлекаемому значению, указанному в списке выборки предложения НЕВЕСТ. 5. Все базовые переменные, на которые ссылаются внедренные БОЬ-операторы, должны быть определены (в РЬВ это оператор ОСЕ) в разделе объявлений внедренного языка Я1Ь, который ограничивается операторами ВЕ61Н 0ЕСЕВВЕ ЯВСТ10Н и ЕН0 0ЕСЕВВЕ ЯЕСТ10Н. 6.

Каждая программа, содержащая внедренные ЯГЕЛЬ-операторы, должна включать базовую переменную с именем ЯЦЬЗТВТЕ. После выполнения любого присутствующего в программе Б()Ь-оператора в эту переменную возврашается код состояния. В частности, код состояния 00000 означает, что оператор был выполнен успешно, а код состояния 02000 — что оператор был выполнен, но никаких удовлетворяющих запросу данных найдено не было. Таким образом, выполнение в программе каждого БОЬ-оператора должно завершаться проверкой значения переменной ЯОЬЗТйТЕ и, если это значение будет отличаться от ожидаемого, должны предприниматься соответствуюшие действия.

На практике, однако, такая проверка обычно выполняется неявно (см. п. 9). 7. Базовые переменные должны иметь типы данных, соответствующие значениям, для размешения которых эти переменные используются. В частности, базовая переменная, используемая в качестве целевой (т.е. для размешения результатов операции ЯЕЕЕСТ), должна иметь тип данных, который совместим с типом выражения, представляющего значение, присваиваемое этой целевой переменной. Аналогично, если базовая переменная служит источником (например, для операции 1НЯЕВТ), она должна иметь тип данных, совместимый с Б()Ь-типом того столбца, которому при- 128 Часть 1.

Основные понятия сваивается значение из этого источника. Подобные замечания касаются также ба- зовых переменных, используемых в сравнениях или в любых других операциях. В официальном документе стандарта 14.22] подробно объясняется, что для двух ти- пов значит быть совместимыми. 8. Базовые переменные для столбцов ЯОЬ-таблиц могут иметь те же имена, что и имена соответствуюших столбцов. 9. Как уже упоминалось, выполнение каждого 9 )Ь-оператора, в принципе, должно сопровождаться проверкой значения, возврашаемого в переменной БОБЯТАТЕ.

Для упрошения этого процесса предназначен оператор ИНЕЫЕЧЕВ, который имеет следуюший синтаксис. ЕХЕС ЯОБ ИНЕНЕЧЕВ <условие> <действие>; Здесь параметр <усповие> может принимать значение либо БОНЕВВОВ (ошибка 9 ПЬ), либо ИОТ ГООВО (не найдено), а параметр <действие> — это либо оператор СОНТ1ИОЕ (продолжить), либо оператор 00 ТО (перейти к). Оператор ИНЕИЕЧЕВ не является выполняемым; это просто директива для БОЬ-компилятора. Наличие в программе выражения "ИНЕИЕЧЕВ <условие> 60 ТО <иетка>" приведет к тому, что компилятор поместит оператор "1Г <условие> 60 ТО <иетка> ЕНО 1Г" после каждого встретившегося ему выполняемого БОЬ-оператора. Однако, встретив выражение "ИНЕНЕЧЕВ <усповие> СОИТ1МНЕ", 9 >Ь-компилятор не вставляет в программу никаких операторов и, следовательно, программист должен будет вставить требуемые операторы вручную.

Два фиксированных значения условия определяются так. ИОТ ГООВО ЯОБЕВВОВ означает никаких данных не найдено — ЯОБЯТАТЕ = 02000 (обычно) означает возникла ошибка - см. описание стандарта 14.22] для переменной ЯОББТАТЕ Каждый оператор ИНЕИЕЧЕВ, который процессор 9 ИЬ встречает при последовательном сканировании текста программы (для определенного условия), отменяет предыдущий (для этого условия). 10. Используя терминологию главы 2, отметим, что внедрение ЯОЬ-операторов устанавливает слабую связь между БОЬ-средой и базовым языком.

129 Глава 4. Введение в язык 5Ь)л", Итак, для предварительного обсуждения этого достаточно. Далее мы сосредоточимся на операторах манипулирования данными. Как уже отмечалось, большинство из них можно использовать практически в неизменном виде (т.е. лишь с незначительными изменениями в синтаксисе). Однако операции выборки требуют особого рассмотрения. Проблема состоит в том, что такие операторы в обшем случае выбирают не одну, а множество строк, в то время как процедурные базовые языки обычно не приспособлены для выборки более одной строки за одно обращение.

Следовательно, необходимо обеспечить своего рода "мост" между уровнем выборки "множество-за-один-раз" в языке ЯОЬ н уровнем выборки "строка-за-один-раз" в базовом языке. В качестве подобного моста используются курсоры. Курсор — это специальный тип ЯОЬ-объекта, который применяется только во внедренном языке Яч,Н (поскольку в интерактивном языке БОЬ в нем нет необходимости). Курсор представляет собой определенный тип логического указателя, который может использоваться для перемешения по набору строк, указывая поочередно на каждую из них и таким образом обеспечивая возможность адресации к этим строкам — к одной за один раз.

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

° Однострочный оператор ЯЕЬЕСТ ° 1ИЯЕВТ ° ОРОАТЕ (кроме формы СОККЕНТ) ° ОЕЬЕТЕ (также кроме формы СОККЕНТ) Рассмотрим примеры лля каждого из этих операторов. Однострочный оператор ЯЕЬЕСТ. Получить статус и название города для поставщика, номер поставки которого задан в базовой переменной 01ЧЕНБ0. ЕХЕС ЗЦЬ ЯЕЬЕСТ БТАТОБ, С1ТХ 1НТО !ВАКХ, сс1ТХ РКОМ Я ИНЕКЕ Б0 = г01ЧЕИЯ0 ) Термин однострочный оператор ЯЕЬЕСТ используется для обозначения выражения ЗЕЬЕСТ, значением которого будет таблица, содержащая не более одной строки. В дан.

Характеристики

Тип файла
DJVU-файл
Размер
10,05 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее