Главная » Просмотр файлов » Фуфаев - Разработка и эксплуатация удалённых БД

Фуфаев - Разработка и эксплуатация удалённых БД (1084483), страница 25

Файл №1084483 Фуфаев - Разработка и эксплуатация удалённых БД (Фуфаев - Разработка и эксплуатация удалённых БД) 25 страницаФуфаев - Разработка и эксплуатация удалённых БД (1084483) страница 252018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

При наличии описания данного объекта удалить его из системного каталога. В этом случае текст хранимой процедуры предваряется специальным оператором проверки и может иметь, например, следующий вид: /* проверим существование в системном каталоге объекта с заданными именем и типом, созданного владельцем ВД */ 1Г ех1зсз (зе1есс * Тгош зузоЬзессз нпеге 1с( оЬ3есг 1б ('бЬо.НЕМ ВООКЯ') апб зузСапг а Охг = 4) /* если объект существует, сначала удалим его из системного каталога*/ с(гор ргосес(иге с)Ьо.НЕМ ВООКЯ ОО СЕЕАТЕ РЕОСЕППЕЕ НЕН ВООКБ (61ЯВН чагсЬаг (12) .ЯТ1ТЬ чагсЬаг (255),ЯАОТОВ чагсЬаг (30).ЯСОАОТОП чагсЬаг (30) . 6 УЕАН1ЕР Тпе. ЯРАОЕБ 1НТ,ЯНОМ ЕХЕМРЬ 1НТ) /* процедура ввода новой книги с указанием числа ее экземпляров.

Изменяемые параметры 61БВН уагсЬаг (12) шифр книги ЯТ1ТЬ чагспаг(255) название ЯАОТОВ чагспаг(30) автор ЯСОАОТОВ уагсйаг(30) соавтор ЯУЕАЕ120 1пс год издания ЯРАОЕБ 1пс число страниц ЯНОМ ЕХЕМРЬ 1пе число экземпляров */ АЯ /* опишем переменную, в которой будет храниться чис-- ло оставшихся неоприходованных экземпляров книги, т.е. экземпляров, которым еще не заданы инвентарные номера */ ОЕСЬАЕЕ ЯТЕК 1пс /* введем данные о книге в таблицу ВООКБ */ 1МЯент 1нтО ВООкЯ чАьпеБ 61БВМ.

Ят1ть. ЯАОтОк. ЯСОАОТОЕ.ЯУЕАВ1ЕОЯРАСЕЯ) /* зададим значение текущего счетчика экземпляров, оставшихся к вводу */ яеьест Ятек = янум ехемрь /* организуем цикл для ввода новых экземпляров данной книги */ ИН1ЬЛ ЯТЕК>0 /* пока число оставшихся экземпляров больше нуля */ 124 ВЕОХН /* так как для инвентарного номера экземпляра книги задано свойство 1РЕНТ1ТУ, его не надо вводить. СУБД сама автоматически вычислит этот инвентарный номер, добавив единицу к предыдущему номеру, и введет его при выполнении оператора ввода 1НЯЕКТ. Поле, определяющее присутствие экземпляра в библиотеке (ЕХ1ЯТ), — логическое, введем в него значение ТЕРЕ, соответствующее наличию экземпляра книги в библиотеке*/ 1ИЯЕЙТ Тпео ЕХЕМРЬАВ ( 1ЯВЫ.РАТА 1Н. РАТА ОПТ. ЕХ1ЯТ) ЧАЬПЕЯ (61ЯВН.ОеСРасе ( ).ЯеСРа1е ( )).ТЕПЕ) /* изменим текущее значение счетчика числа оставшихся экземпляров */ ЯЕТЕСТ ЯТЕК = ЯТЕК вЂ” 1 ЕЫП /* конец цикла ввода данных об экземпляре книги*/ 60 Если инкрементное поле не использовалось в качестве инвентарного номера экземпляра, можно самим назначать этот инвентарный номер, увеличив на единицу номер последнего хранимого в библиотеке экземпляра книги.

Можно также попробовать просто сосчитать число существующих экземпляров в библиотеке, но если при этом некоторые из них отсутствуют, номер нового экземпляра может быть уже использован, и тогда нельзя будет ввести данные, так как система не позволит нарушить уникальность первичного ключа. Текст процедуры в этом случае будет иметь следующий вид: /* проверим существование в системном каталоге объекта с заданными именем и типом, созданного владельцем БД */ 11 ехьвсз (ве1есь * ггош вузоЬ3есьв нЬеге Ы оЬ)есг Тс(('с(Ьо.НЕМ ВООКЯ') апс) зуззт.ав а Охг = 4) /* если объект существует, сначала удалим его из системного каталога */ Ягор ргоседцге с(Ьо. НЕМ ВООКЯ СВЕАТЕ РВОСЕРУВЕ НЕМ ВООКЯ (61ЯВН чагспаг (12) .ЯТ1Т1.

иагспаг (255),ЯАРТОВ чагспаг (30).ЯСОАРТОВ чагспаг (30).6 хеАВ1ЯР Тпс. ЯРАсеЯ 1ыт,бнпм ехемрь 1нт) /* процедура ввода новой книги с указанием числа ее экземпляров. Изменяемые параметры 61ЯВН чагспаг (12) шифр книги ЯТ1ТР чагспаг(255) название ЯАРТОН чагспаг(30) автор ЯСОАПТОЕ чагспаг(30) соавтор ЯУЕАН1ЕР Тпс год издания 125 ОРАСЕБ Тпс число страниц ОМОМ ЕХЕМРР 1пв число экземпляров */ РЕСРАКЕ ОТЕК Тпе РЕСЬАКЕ 61ИЧ Тпг 1МБЕКТ 1МТО ВООКБ ЧАРСЕБ (61БВМ.ОТ1Ть.ОАРТОК.ОСОАСТОК. ОУЕАКТЕР.ОРАСЕБ) /* зададим значение текущего счетчика экземпляров, оставшихся к вводу */ БЕЕЕСТ ОТЕК = ОМОМ ЕХЕМРР /* определим максимальное значение инвентарного номера в библиотеке */ яегест 61мч = Беьест мАх (1Р хемРРАк) РВОМ ЕХЕМРЪАК /* организуем цикл для ввода новых экземпляров данной книги */ ии11е Отек>0 /* пока число оставшихся экземпляров больше нуля */ ВЕСХМ 1МЯЕВТ 1МТО ЕХЕМРРАК (1Р ХЕМРРАК.1БВМ.РАТА 1М.

РАТА ОРТ.ЕХ1БТ) чАьпеБ ((61ич.(61БВн.сетРАте ( ). сетРАте ( ), ткРе) /* изменим текущие значения счетчика и инвентарного номера */ ЗЕГЕСТ ОТЕК = ОТЕК вЂ” 1 ЗЕГЕСТ 61ИЧ = 61МЧ + 1 ЕМР /* конец цикла ввода данных об экземпляре книги */ СО Хранимые процедуры могут вызывать одна другую. Создадим хранимую процедуру, которая возврашает номер читательского билета для конкретного читателя: /* проверим существование в системном каталоге объекта с заданными именем и типом, созданного владельцем ВД */ 11 ех1зсв (зе1есс * Глот вузоЬзессз нЬеге тб = оЬзесс Гб ('бЬо.

ск кеАРек') АМР вуввсас а Охй = 4] /* если объект существует, сначала удалим его из системного каталога */ бгор ргосебцге бЬо.СК КЕАРЕК /* процедура возвращает номер читательского билета, если читатель есть, и выдает нуль в противном случае. В качестве параметров передадим фамилию и дату рождения */ СКЕАТЕ РКОСЕРРКЕ СК КЕАРЕК (ОР1КБТ МАМЕ чагсЬаг (30). ОВ1КТН РАУ чагсЬаг (12)) АБ 126 /* опишем переменную, в которой будет храниться номер читательского билета*/ РЕСЬАКЕ ЯМОМ КЕАРЕК 1МТ /* определим наличие читателя */ ЯЕРЕСТ ЯМОМ КЕАРЕК = ЯЕьЕСТ МУМ КЕАРЕК ГНОМ КЕАРЕКЯ ИИЕВЕ Г1КЯТ МАМЕ = Я Р1КЯТОАМЕ АМР сопчегс (чагспаг (8).

В1КТН РАУ,4) = ЯВ1КТН РАУ ВЕТПВМ СОАЬЕЯСЕ ((ЯМОМ КЕАРЕК.О) В данной процедуре использовалась функция преобразования типа данных ([а(аТ]ше в тип данных чагс])аг(8). Это было необходимо сделать для согласования типов данных при выполнении операции сравнения. Действительно, входная переменная ФВ1КТН ОАг' имеет символьный тип (чагс])аг), а поле базы данных В1КТН РАг' имеет тип 8таИРагеТппе. Хранимые процедуры допускают наличие нескольких выходных параметров, дая чего каждый из этих параметров после задания ему типа данных должен иметь дополнительное ключевое слово О1]ТР13Т. Рассмотрим пример хранимой процедуры с несколькими выходными параметрами.

Создадим процедуру ввода нового читателя, причем внутри этой процедуры выполним проверку наличия в картотеке данного читателя, чтобы не назначать ему новый номер читательского билета. При этом выходными параметрами процедуры будут номер читательского билета, признак того, был ли ранее записан читатель с данными характеристиками в нашей библиотеке, а если он был записан, то сколько книг за ним числится. Данная процедура будет иметь следуюший вид: /* проверим наличие данной процедуры в БД*/ ехьаеа (ве1есе * ггош зувоЬ)ессз ньеге Тг) оЬ]есГ Тс) (М'[с)Ьо].[МЕХ КЕАРЕК]') апг( ОВдЕСТРКОРЕКТУ (Ьг(, М' 1в Ргосес(цге')=1) агор ргосеоцге [с)Ьо].[МЕМ КЕАРЕК] ОО /* процедура проверки существования читателя с заданными значениями вводимых параметров возвращает новый номер читательского билета, если такого читателя ранее не было, а если он был, сообщает его старый номер и число книг, которые он должен */ СКЕАТЕ РКОСЕРРКЕ МЕХ КЕАРЕК (ЯМАМЕ КЕАРЕК чагспаг (30), (ЯАРКЕЯ чагспаг (40).

ЯНООМ РНОМЕ спаг (9) . (ЯМОКК РНОМЕ сЬаг (9), ЯВТКТН РАХ чагсЬаг (8). ЯМОМ КЕАРЕК Тпс ОРТРРТ. /* опишем выходной параметр, определяющий номер читательского билета*/ ЯУ М Тпе ОРТРУТ. 127 /* опишем выходной параметр, определяющий, был ли читатель ранее записан в библиотеку */ ЯСООИТ ВООКЯ 1пс ООТРОТ /* опишем выходной параметр, определяющий число книг, которое числится за читателем */ АЯ /* опишем переменную, в которой будет храни~ься номер читательского билета, если читатель уже был записан в библиотеку */ РЕСРАКЕ ЯИ К Тпб /* определим наличие читателя */ ЕХЕС ЯН К = СК КЕАРЕК ЯНАМЕ КЕАРЕК.ЯВ1КТН РАХ 1Р ЯИ К= О Ог ЯИ К 1з Ни11 /* если читатель с заданными характеристиками не найден, т.

е. переменной ЯИ К присвоено значение нуль или ее значение не определено, перейдем к назначению для нового читателя нового номера читательского билета */ ВЕО1Е /* так как номер читательского билета определялся как инкрементное поле, то в операторе ввода его не указывают, система сама назначит новому читателю очередной номер */ 1ЕЯЕКТ 1НТО КАРЕН МАМЕ КЕАРЕК.АРКЕЯ.НООМ РНОИЕ, ИОКК РНОИЕ.

В1КТН РАХ) ЧАРОЕЯ (ЯНАМЕ КЕАРЕК.ЯАРКЕЯ.ЯНООМ РНОИЕ. (ЯНОКК РНОНЕ, Сопчегт. (вша11с(аСет.1ше . ЯВ1КТН РАХ.4) ) /* в операторе 1НЯЕКТ следует преобразовать символьную переменную ЯВ1КТН РАХ в тип данных вша11с(апеТ1ше, который определен для поля дата рождения В1КТН РАХ. Это преобразование выполняется с помощью встроенной функции Сопуегь языка Тгапзасб ЯОР */ /* определим назначенный номер читательского билета */ ЯЕ1ЕСТ ЯМОМ КЕАРЕК = ИИМ КЕАРЕК УКОМ РЕАРЕР ЯНЕКЕ БАМЕ КЕАРЕК = ЯИАМЕ КЕАРЕК Сопчегб (чагсйаг (8).В1КТН РАХ.4) = ЯВ1КТН РАХ /* снова используем функцию преобразования типа, только в этом случае необходимо преобразовать поле ВТКТН РАХ из тица зша11с(аСеСТше в тип чагспаг (8), в котором задан входной параметр ЯВ1КТН РАХ */ ЯЕ1ЕСТ ЯХ И =О /* присвоим выходному параметру ЯХ Н значение О (нуль), соответствующее тому, что данный читатель ранее в библиотеке не был записан */ ЗЕУЛСТ ЯСОРИТ ВООКЯ = О 128 /* присвоим выходному параметру, хранящему число книг, числящихся за читателем, значение нуль */ ВЕТРВИ 1 ЕИР ЕЬЯЕ /* если значение переменной 6Н К не равно нулю, то читатель с заданными характеристиками был ранее записан в библиотеке */ ВЕО1И /* определим число книг у читателя с найденным номером читательского билета */ Беьест 6сООит ВООкя = сОцнт(1ич кцмВек) РВОИ ехемР)Ак ннеке кцм кеАРек = 6н к БЕЬЕСТ 6СООИТ ВООКЯ = СОАЬЕЯСЕ (6СООИТ ВООКЯ.О) /" присвоим выходному параметру 6СООНТ ВООКЯ значение, равное числу книг, числящихся за читателем.

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

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

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

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