Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лабораторным работам №11 Пакеты.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
131.35 Кб
Скачать

Лабораторная работа № 11. Пакеты oracle pl/sql

  1. Цель работы

Получить общее представление о пакетах ORACLE PL/SQL, научиться составлять и применять пакеты, используя различные типы курсоров, процедуры и функции.

2 Методические указания

Лабораторная работа направлена на ознакомление с процедурами и функциями языка PL/SQL, а также на изучение основных принципов работы с ними.

Требования к результатам выполнения лабораторного практикума:

• при выполнении задания необходимо сопровождать все реализованные процедуры и функции набором тестовых входных и выходных данных и описаниями к ним;

• при внесении изменений в базу данных с помощью языка DML использовать операторы управления транзакциями, в частности оператор COMMIT или ROLLBACK, для их корректного завершения;

• по завершении выполнения задания составить отчет о проделанной работе.

3 Задания к лабораторной работе № 11

  1. Создать Пакет на изменение зарплаты сотрудника, проверяющей, находится ли она в заданных должностных рамках. Рамки зарплаты берутся из таблицы JOBS. Если назначенная зарплата меньше минимально возможной, то установить сотруднику минимально возможную зарплату (min_salary). И наоборот, если назначенная зарплата больше максимально возможной, то установить сотруднику максимально возможную зарплату (max_salary).

  2. Данное задание отличается тем, что еще используется внутренняя приватная переменная. Задание звучит так: добавить к пакету 1 задания функцию, возвращающую текст ошибки, если таковая возникла. Если не было ошибки или пакет еще не использовался, то функция должна выдавать NO ERRORS. Текст ошибки должен храниться в памяти (но не в базе данных), то есть посмотреть его мы можем в любой момент и только с помощью выше указанной функции. (это уточнение для того, чтобы использовали приватную переменную).

4. Теоретический материал Создание пакетов

Пакет — это объект  базы данных,  который группирует  логически связанные  типы,  программные  объекты  и  подпрограммы  PL/SQL. Еще их называют модулями. Сама концепция пакета в PL/SQL пришла все из того же языка программирования Ada. Пакет позволяет в точном определении хранить связанные объекты в одном месте. В предыдущих лабораторных работах вы пользовались пакетом для вывода данных на экран.

DBMS_OUTPUT.enable;

DBMS_OUTPUT.put_line('HELLO WORLD!');

При установке сервера Oracle - происходит установка очень большого количества пакетов. Для работы с динамическими запросами DBMS_SQL, для работы с Web пакет DBMS_WEB и т.д. Все это огромное количество готового кода, который разработчики фирмы Oracle предоставляют в ваше распоряжение.

Слева хорошо виден сам пакет, а справа первая сверху строчка "procedure put_line(a varchar2);" и есть как раз функция вывода "на экран". В отличие от процедур и функций, которые могут содержаться локально в блоке или храниться в базе данных, пакеты могут быть только хранимыми и никогда локальными. При использовании пакетов, производительность системы увеличивается. По своей сути модуль представляет собой именованный раздел объявлений. В него могут входить различные объявления, как то:

  • процедуры

  • функции

  • типы

  • курсоры

Пакеты обычно состоят из двух частей, спецификации и тела,  хотя иногда  в  теле  нет  необходимости.   СПЕЦИФИКАЦИЯ пакета – это интерфейс с вашими приложениями; она объявляет типы, переменные, константы,  исключения,  курсоры  и  подпрограммы, доступные для использования  в  пакете.   ТЕЛО  пакета  полностью   определяет курсоры и подпрограммы, тем самым реализуя спецификацию пакета.

  В отличие от подпрограмм, пакеты нельзя вызывать, передавать  им параметры или вкладывать  их друг в  друга.  В остальном  формат пакета аналогичен формату подпрограммы:

 

        PACKAGE имя IS  -- спецификация (видимая часть)

    -- объявления общих типов и объектов

    -- спецификации подпрограмм

    END [имя];

 

    PACKAGE BODY имя IS  -- тело (скрытая часть)

    -- объявления личных типов и объектов тела подпрограмм

        [BEGIN

    -- предложения инициализации]

        END [имя];

 

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

Вы можете  отлаживать, развивать  или заменять  тело пакета,  не изменяя интерфейса к этому телу (т.е. спецификации пакета).

  Пакеты создаются интерактивно в  SQL*Plus или SQL*DBA с  помощью команд  CREATE  PACKAGE  и  CREATE  PACKAGE  BODY.  

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