Сетевые базы данных |
Лабораторные работы |
Лабораторные работы в формате Microsoft Word
Методические указания к лабораторным работам
Методические указания к лабораторным работам
Методические указания к лабораторным работам содержат следующие разделы:
1. Требования к оформлению отчета
2. Ввод, редактирование и выполнение программ в среде Oracle 10g XE
3. Приложения.
3.1 Элементы управления рабочих окон Oracle 10g XE
3.2 Основные управляющие клавиши
3.3 Список наиболее распространенных ошибок компиляции
Прежде, чем приступать к выполнению лабораторных работ рекомендую:
- прочитать материал, изложенный в п.10 (Интегрированная среда Oracle 10g XE) конспекта лекций для ознакомления с работой в среде ТР;
- изучить материал, изложенный в п.1 - 2 включительно конспекта лекций, выполнив все предложенные примеры;
- перед выполнением каждой лабораторной работы изучать соответствующие разделы конспекта лекций, ссылки на которые даны в темах лабораторных работ, выполняя все предложенные примеры.
1. Требования к оформлению отчета
Для проверки лабораторной работы необходимо представить следующее:
!!! Номер варианта лабораторной работы определяется по последней цифре пароля
Если программа написана в соответствии с заданием, в ней нет ошибок, и получен правильный результат ее работы, то вы получаете зачет по данной лабораторной работе. В противном случае работа отправляется вам на доработку.
2. Ввод, редактирование и выполнение программ в среде Oracle 10g XE
Рабочее окно Oracle 10g XE, которое будет использоваться при выполнении лабораторных работ, - это окно SQL Commands. Оно представляет собой текстовый редактор, используемый для интерактивного создания и выполнения команд SQL и PL/SQL. Вид окна показан на рис. 1.
Рис.1. Окно SQL Commands
Окно состоит из 3-х панелей, каждая из которых представлена ниже. Рассмотрены назначения панелей и размещенных на них управляющих элементов. Описание управляющих элементов также приведено в приложениях.
2.1. Навигационная панель
Home > SQL > SQL Commands |
Рис.2. Навигационная панель окна SQL Commands
2.2. Панель ввода
Рис.3. Панель ввода окна SQL Commands
Кнопка Run (запустить) служит для запуска на выполнение команд, введенных в поле ввода.
2.3. Панель вывода
Самая нижняя панель – это панель вывода результатов (Output pane) выполнения команд и программ.
Рис.4. Панель вывода окна SQL Commands
2.4. Работа с текстовым редактором SQL Commands
Ввод текста команд SQL и программы PL/SQL.
Выполнение команд SQL и программ PL/SQL
Запуск команд и программ на выполнение осуществляется нажатием кнопки Run на панели ввода.
После выполнения команда/программы полученные результаты отображаются в поле вывода.
Работа с окнами редактора Oracle 10g XE.
· выделить мышкой текст на панели ввода, нажать клавишу Delete.
· на панели вывода выбрать в меню пункт History;
2.5. Хранение программ Oracle 10g XE в текстовых файлах
Для сохранения команд SQL или текста программы в файле необходимо выполнить следующие действия.
2.6. Выход из среды Oracle 10g XE
После окончания работы в Oracle 10g XE закройте окно браузера MS Internet Explorer.
3.1 Элементы управления рабочих окон Oracle 10g XE
Название элемента управления |
Назначение элемента управления |
Autocommit (автофиксация) |
Флажок Autocommit устанавливает режим сохранения в базе данных. Если флажок установлен, то любая команда SQL или блок PL/SQL выполняются в рамках своей собственной транзакции, которая автоматически фиксируется, т.е. результаты выполнения сразу сохраняются в базе данных. Если флажок не установлен, то можно использовать SQL-команды COMMIT или ROLLBACK для соответственно сохранения результатов в БД или их отмены. |
Describe (описывать) |
Пункт меню Describe позволяет получить описание объекта базы данных. Например, указав имя таблицы, можно увидеть список ее полей с дополнительной информацией о них. |
Display (отобразить) |
Поле Display позволяет указывать количество строк вывода результата в панели вывода, чтобы не выводить все результирующие строки (при их большом количестве). |
Explain (объяснять) |
Пункт меню Explain дает возможность отобразить информацию о механизме выполнения команд. Такого рода информация может быть использована для настройки режима выполнения с целью повышения его эффективности. |
History (история) |
Пункт меню History позволяет просмотреть всю историю выполнения команд SQL. В отображаемом списке ранее выполненных команд можно выбрать любую их них, щелкнув мышкой по команде. Выбранная таким образом команда автоматически помещается в поле ввода, и готова к выполнению по кнопке Run. |
Run (запустить) |
Кнопка Run служит для запуска на выполнение команд, введенных в поле ввода. |
Result (результат) |
Пункт меню Result выбран изначально (по умолчанию), что обеспечивает режим вывода результатов выполнения команд при нажатии кнопки Run на панели ввода. |
Save (сохранить) |
Кнопка Save позволяет запомнить набранные в панели ввода команды под указанным именем. Используя это имя, можно позднее загрузить сохраненные команды в поле ввода, не набирая их снова вручную. |
Saved SQL (запомненные команды SQL) |
Пункт меню Saved SQL используется для выбора ранее запомненных команд (смотри описание кнопки Save панели ввода). |
3.2 Основные управляющие клавиши
Клавиши |
Функция клавиш |
Esc |
Выход из различных прикладных систем (отмена команд, сообщений и т.д.) |
Enter |
Клавиша ввода |
Ctrl |
Управление. Действует при одновременном нажатии с другими клавишами |
Ctrl + Alt |
Переход к русскому алфавиту. Повторное нажатие - возвращение к латинскому алфавиту |
Alt |
Изменение. Действует совместно с другими клавишами |
Shift |
Смена регистра прописных и строчных букв |
Caps Lock |
Фиксация регистра прописных букв. Повторное нажатие клавиши отменяет режим |
Num Lock |
Включение/выключение малой цифровой клавиатуры (расположена справа) |
BackSpace |
Удаление символа слева от курсора |
Del |
Удаление символа справа от курсора |
Home |
Перевод курсора в начало строки |
End |
Перевод курсора в конец строки |
¬ ® ¯ |
Команды перемещения курсора на одну позицию в направлении, указанном стрелкой |
PgUp |
Переход на предыдущую страницу |
PgDn |
Переход на следующую страницу |
Команды работы с блоками
Shift - ¬ ® ¯ Сtrl-C Ctrl-X Ctrl-V
Сtrl-Ins
Shift-Ins |
Отметить блок в направлении, указанном стрелками (отмеченный блок выделяется другим цветом) Скопировать отмеченный блок в буфер Удалить отмеченный блок и поместить его в буфер Скопировать блок из буфера в текущую позицию курсора (таким образом можно переписывать фрагменты из одной программы в другую) Скопировать отмеченный блок в буфер. Аналогично Ctrl-C Скопировать отмеченный блок из буфера в текущую позицию курсора. Аналогично Ctrl-V |
3.3 Список наиболее распространенных ошибок компиляции
№ и тип ошибки |
Примечание |
ORA-00942: table or view does not exist |
Указано имя несуществующей таблицы или представления |
Тема 1: Типы данных SQL Oracle. Стандартные функции. Арифметические и логические выражения.
(в лекциях см. п. 2, 1.4, 3 1.1)
Тема 2: Агрегатные функции. Группировка строк. Сортировка строк
(в лекциях см. п.3.1.1)
Пример задания:
1. Вывести имена всех продавцов и города, в которых они работают, кроме продавцов, работающих в Лондоне.
Решение:
select sname,city from sal where city<>'London'
Результат:
SNAME |
CITY |
Serres |
San Jose |
Rifkin |
Barcelona |
Axelrod |
New York |
Задание:
Вариант 0.
1.
Напишите запрос к таблице Покупателей, чей вывод
может включить всех покупателей, причем с оценкой выше 200, если они
находятся не в Риме
2. Запросите двумя способами все заказы на 3 и 4 января.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 января.
4. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с сортировкой по возрастанию рейтингов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах из Берлина.
Вариант 1.
1.
Напишите запрос к таблице Покупателей, чей вывод
может включить всех покупателей, причем с оценкой выше 100, если
они находятся не в Лондоне
2. Напишите запрос, который может вывести
всех покупателей, чьи имена начинаются с буквы,
попадающей в диапазон от A до G.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 6 января.
4. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с сортировкой по убыванию рейтингов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях из Лондона.
Вариант 2.
1.
Напишите запрос к таблице Покупателей для выборки данных, при этом
рейтинг должен быть не ниже 200, кроме покупателей из Лондона.
2. Запросите двумя способами все заказы на 3 и 6 января.
3. Напишите запрос, который сосчитал бы сумму всех заказов для продавца с номером 1001.
4. Напишите запрос, который выбрал бы наименьший рейтинг в каждом городе с сортировкой по убыванию названий городов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях с заказами 3 числа.
Вариант 3.
1.
Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 200, если не находятся в Риме
2. Напишите запрос, который может вывести всех покупателей, чьи имена начинаются с буквы, попадающей в диапазон от D до L.
3. Напишите запрос, который сосчитал бы сумму всех заказов для продавца 1002.
4. Напишите запрос, который выбрал бы средние комиссионные в каждом городе с сортировкой по возрастанию названий городов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях с рейтингом 100.
Вариант 4.
1.
Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой ниже 300, если они не из Берлина
2. Запросите двумя способами все заказы на 3, 5 и 6 января.
3. Напишите запрос, который сосчитал бы среднюю сумму заказа для продавца 1007.
4. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по возрастанию номеров заказов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах не из Лондона.
Вариант 5.
1.
Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой не выше 100, если они не из San Jose
2.
Напишите запрос, который может вывести всех покупателей, чьи
города начинаются с буквы, попадающей в диапазон от A до S.
3. Напишите запрос, который сосчитал бы сумму всех заказов для заказчика 2008.
4. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по убыванию чисел.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях не из Рима.
Вариант 6.
1.
Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 200, если они не находятся в San Jose
2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1001 и 1003.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 5 января.
4. Напишите запрос, который выбрал бы наименьший номер заказа на каждое число с сортировкой по убыванию чисел.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о покупателях из San Jose.
Вариант 7.
1.
Напишите запрос к таблице Покупателей, чей вывод может включить всех
покупателей, причем с оценкой выше 100, если они не находятся в Лондоне
2.
Напишите запрос, который может вывести всех покупателей, чьи города
начинаются с буквы, попадающей в диапазон от C до R.
3. Напишите запрос, который сосчитал бы сумму всех заказов для продавцов с номерами меньше 1003.
4. Напишите запрос, который выбрал бы самый ранний заказ для каждого продавца с сортировкой по убыванию имен продавцов.
5.
Создайте представление на основе запроса из задания 1 и, используя
представление, выведите данные о покупателях с рейтингом 100.
Вариант 8.
1.
Напишите запрос к таблице Продавцов, чей вывод может включить всех
продавцов, причем с комиссионными не меньше 0.13, если они не
находятся в Лондоне
2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1002 и 1007.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 и 5 января.
4. Напишите запрос, который выбрал бы самый поздний заказ каждого продавца с сортировкой по убыванию дат заказов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах с комиссионными больше 0,11.
Вариант 9.
1.
Напишите запрос к таблице Продавцов, чей вывод может включить
всех продавцов, причем с комиссионными меньше 0.13, если они не
находятся в San Jose
2. Напишите запрос, который может вывести всех
покупателей, чьи города начинаются с буквы, попадающей в диапазон
от A до L.
3. Напишите запрос, который сосчитал бы среднюю сумму заказа для покупателя 2004.
4. Напишите запрос, который выбрал бы самый ранний заказ каждого заказчика с сортировкой по возрастанию дат заказов.
5.
Создайте представление на основе запроса из задания 1 и, используя это
представление, выведите данные о продавцах с заказами до 5 числа.
Тема 1: Выборка данных из объединенных таблиц (в лекциях см. п.3 1.1).
Тема 2: Подзапросы (в лекциях см. п. 3.1.1).
Тема
3: Создание таблиц (в лекциях см. п.3.3.1).
Пример задания:
1. Вывести для каждого продавца номера его заказов.
Решение:
select s.sname, o.onum
from sal s,ord o
where s.snum=o.snum
order by s.sname,o.onum;
Результат:
SNAME |
ONUM |
Axelrod |
3009 |
Motica |
3002 |
Peel |
3003 |
Peel |
3008 |
Peel |
3011 |
Rifkin |
3001 |
Rifkin |
3006 |
Serres |
3005 |
Serres |
3007 |
Serres |
3010 |
Задание:
Вариант 0.
1. Напишите запрос, который вывел бы для каждого заказа на 3 января его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.
2. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Hoffmana, используя подзапрос.
3. Выведите информацию о первых двух продавцах, имеющих заказы после 3-го числа.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 1.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и не в Риме.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Motiki, используя подзапрос.
3. Выведите информацию о первых трех заказах, чьи суммы выше средней суммы по всем заказам.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 2.
1. Напишите запрос, который вывел бы для каждого заказа на 4 и 6 января его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.
2. Выведите имена и города всех заказчиков с рейтингом, отличным от Hoffmana, используя подзапрос.
3. Выведите информацию о первых двух покупателях, имеющих заказы до 5-го числа.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 3.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в San Jose и не в Berlin.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Motiki, используя подзапрос.
3. Выведите первые три по возрастанию стоимостей заказа и определите имена их покупателей.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 4.
1. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 4 января) его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.
2. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Grassa, используя подзапрос.
3. Выведите последние два заказа, отсортированных по возрастанию стоимостей, и определите имена их продавцов.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 5.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость в рублях (по текущему курсу) и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и в Риме.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Serresa, используя подзапрос.
3. Выведите первые три по алфавиту продавца и все их заказы.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 6.
1. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 3 и 5 января) его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.
2. Выведите имена и города всех заказчиков с рейтингом, отличным от Grassa, используя подзапрос.
3. Выведите продавцов из первые трех по алфавиту городов и все их заказы.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 7.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в San Jose и в Barcelona.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Serresa, используя подзапрос.
3. Выведите последние два по алфавиту покупателя и все их заказы.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 8.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и Нью-Йорке.
2. Напишите запрос, который выводит все заказы, сумма которых больше средней по все заказам, используя подзапрос.
3. Выведите покупателей из последних трех по алфавиту городов и все их заказы.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Вариант 9.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и не в Нью-Йорке.
2. Напишите запрос, который выводит все заказы, сумма которых меньше средней по всем заказам, используя подзапрос.
3. Выведите три самых поздних заказа, выполненных до 5-го числа, и имена и города их продавцов.
4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.
Тема 1: Создание таблиц. Последовательности (в лекциях см. п.3.3.1, 3.3.2).
Тема 2: Вставка, изменение и удаление данных из таблиц (в лекциях см. п.3.1.2).
Тема 3: Транзакции (в лекциях см. п.3.2).
Пример
задания:
1. Создать таблицу с именем tab1 в базе данных одним числовым полем для целых двузначных чисел и двумя символьными полями размером по 50 байтов.
Решение:
create table tab1 (
col1 number(2),
col2 varchar2(50),
col3 varchar2(50)
)
Результат:
Table created.
Задание:
Вариант 0.
Тема 1: Блоки PL/SQL. Типы данных и операторы языка PL/SQL (в лекциях см. п.5, 6, 7).
Тема 2: Вывод данных (в лекциях см. п. 10.1).
Тема 3: Работа с базами данных в программах PL/SQL. Курсоры
(в лекциях см. п. 8).
Тема 4: Обработка исключительных ситуаций
(в лекциях см. п. 5.4).
Пример задания:
1. Составить и выполнить программу PL/SQL, которая считывает из базы данных количество продавцов в Лондоне и выводит результат.
Решение:
declareПримечание: при наборе текста в окне SQL Commands апострофы (’) должны быть прямыми, а не наклонными.
Результат:
Задание:
Вариант 0.
Тема 1: Хранимые процедуры и функции PL/SQL
(в лекциях см. п. 9.1, 9.2).
Тема 2: Пакеты PL/SQL
(в лекциях см. п. 9.3).
Тема 3: Триггеры PL/SQL
(в лекциях см. п. 9.6).
Пример задания:
1. Создать хранимую процедуру PL/SQL, которая выводит наибольшее из двух чисел, заданных в качестве аргументов.
Решение:
create or replace procedure PrMax (
p_N1 in number,
p_N2 in number ) is
res number;
begin
res := case when(p_N1 >= p_N2) then p_N1 else p_N2 end;
DBMS_OUTPUT.PUT_LINE('вывод: '||res );
end;
/
Результат:
Procedure created.
2. Вызвать процедуру PrMax из безымянного блока, задав числовые аргументы.
Решение:
begin
PrMax(2, 8.9);
end;
/
Результат:
вывод: 8,9
3. Создать триггер PL/SQL, который регистрирует в журнальной таблице вставку строки в таблицу Ord. В журнал необходимо заносить вид операции, пользователя и время выполнения.
Решение:
CREATE OR REPLACE TRIGGER Tr_Ord_Log
AFTER INSERT ON Ord
BEGIN
INSERT INTO Ord_Log (logid, lsql, luser, ltime)
VALUES(sq_log.nextval, ‘INSERT’, USER, SYSDATE);
END Tr_Ord_Log;
/
Результат:
Trigger created.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице изменение комиссионных для продавцов только в том случае, если комиссионные увеличиваются.
Решение:
CREATE OR REPLACE TRIGGER Tr_Sal_Log
AFTER UPDATE ON Sal
FOR EACH ROW
WHEN (new.comm. > old.comm)
BEGIN
INSERT INTO Sal_Log (logid, lsql, luser, ltime)
VALUES(sq_log.nextval, ‘UPDATE’, USER, SYSDATE);
END Tr_Sal_Log;
/
Результат:
Trigger created.
Задание:
Вариант 0.
1. Создать пакет, в который поместить процедуру, которая выводит произведение двух чисел, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых трех заказах, чьи суммы выше значения, переданного в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует в журнальной таблице изменение рейтинга для покупателей. При регистрации необходимо сохранять в журнале старое и новое значения рейтинга и время изменения.
4. Создать триггер PL/SQL, который регистрирует в журнальных таблицах операции изменения и удаления данных в таблице заказов. Каждый вид операции должен регистрироваться в своей журнальной таблице.
Вариант 1.
1. Создать пакет, в который поместить функцию, которая возвращает минимальное из двух чисел, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых двух покупателях, имеющих заказы до даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает изменение рейтинга для покупателей, если изменение происходит после 25-го числа.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице продавцов. При регистрации необходимо сохранять вид операции и время ее выполнения.
Вариант 2.
1. Создать пакет, в который поместить процедуру, которая принимает в параметрах Ваши фамилию, имя и отчество, а выводит инициалы и фамилию. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых N (передать в параметре) по возрастанию стоимостей заказах и именах их покупателей. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает изменение суммы заказа только в рабочее время.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки и изменения заказов. Регистрация выполняется, если стоимость заказа превышает $100, и включает имя пользователя, вид операции и стоимость заказа.
Вариант 3.
1. Создать пакет, в который поместить функцию, которая возвращает куб числа, заданного в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о последних N (передать в параметре) заказах, отсортированных по возрастанию стоимостей, и именах их продавцов. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение комиссионных продавцов с указанием только имени таблицы и времени изменения.
4. Создать триггер PL/SQL, который запускается при удалении покупателей. Триггер должен запрещать удаление, если покупатель имеет более одного заказа.
Вариант 4.
1. Создать пакет, в который поместить процедуру, которая выводит заглавными буквами строку, заданную в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых N (передать в параметре) по алфавиту продавцах и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает удаление заказов продавца в последний день месяца.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице заказов. При регистрации необходимо сохранять вид операции, номер и сумму заказа.
Вариант 5.
1. Создать пакет, в который поместить функцию, которая возвращает самую длинную из двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о продавцах из первых N (передать в параметре) по алфавиту городов и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает удаление покупателей с количеством заказов меньше трех.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице заказов, а также округляет стоимость заказа до целого числа при вставке и изменении.
Вариант 6.
1. Создать пакет, в который поместить процедуру, которая выводит самую короткую из двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о последних N (передать в параметре) по алфавиту покупателях и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение комиссионных, только если новое значение больше прежнего.
4. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и дату операции и запрещать удаление, если стоимость заказа превышает $5000.
Вариант 7.
1. Создать пакет, в который поместить функцию, которая возвращает суммарную длину двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о покупателях из последних N (передать в параметре) по алфавиту городов и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение городов для покупателей с сохранением в журнале имени покупателя, прежнего и нового названия города.
4. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и время операции и запрещать удаление, если количество заказов в таблице не превышает 10.
Вариант 8.
1. Создать пакет, в который поместить функцию, которая принимает в параметрах Ваши фамилию, имя и отчество, а возвращает фамилию и инициалы. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о трех самых поздних заказах, выполненных до даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает удаление продавцов, если количество выполненных им заказов больше трех.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаление заказов. Регистрация выполняется только в нерабочее время и включает имя пользователя, вид операции и стоимость заказа.
Вариант 9.
1. Создать пакет, в который поместить процедуру, которая выводит строчными (маленькими) буквами строку, заданную в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых двух продавцах, имеющих заказы после даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает удаление покупателей только из города Лондон.
4. Создать триггер PL/SQL, который регистрирует в журнальных таблицах операции вставки, изменения и удаления данных в таблице продавцов. Каждый вид операции необходимо регистрировать в своей таблице. При регистрации необходимо сохранять пользователя и время ее выполнения.