Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив3 / kurs (2) / kurs / Курсовая_БД.docx
Скачиваний:
11
Добавлен:
07.08.2013
Размер:
85.46 Кб
Скачать
  1. Описание процедур и функций

PROCEDURE changekey(num IN NUMBER, newkey IN NUMBER -Процедура должна изменять первичный ключ рейса. В процедуру передается номер рейса, по которому необходимо искать, и новый первичный ключ.

FUNCTION maxplane(fly IN NUMBER) RETURN NUMBER - функция , которая возвращает самолет с максимальной вместимостью для рейса, переданного как параметр.

PROCEDURE eachplane - процедура , которая выводит на экран для каждого рейса самолет,возвращаемый функцией..

6. Предоставление привилегий (grants.Sql)

Согласно заданию, требуется выдать право на использование представления всем пользователям; на использование процедуры changekey– только конкретному пользователю.

Однако процедура changekeyнаходится внутри пакета Pack_2, и нет возможности выдать право на ее запуск (можно лишь выдать привилегии на использование всего пакета, что недопустимо), а, следовательно, потребуется создать самостоятельную процедуру-обертку, которая будет запускать процедуруchangekeyиз пакета. На запуск этой процедуры предоставим привилегии пользователюSYSTEM.

  1. Выводы о проделанной работе

В процессе разработки скриптов, необходимых для выполнения задания курсовой работы, были разработаны две таблицы: airplanesиflights, необходимые для хранения информации предметной области. При этом были учтены связи между таблицами. Также были разработаны пакеты, содержащие процедуры обработки данных; триггер, контролирующий время выхода фильма; и представление view, позволяющее пользователям БД просматривать информацию из связанных таблиц в формализованном и удобочитаемом виде.

В ходе выполнения данной курсовой работы я закрепила и улучшил навыки работы с СУДБ Oracle, полученные при выполнении лабораторных работ.

Литература

  1. Лекции по курсу «Сетевые базы данных»

  2. Oracle PL/SQL для профессионалов 3-е изд. / С. Фейерштейн, Б. Прибыл, - СПб.:Питер, 2004. – 941 с.

  3. Краткий справочник по Oracle7. http://www.codenet.ru/db/oracle/ora1/

  4. Oracle Database SQL Reference 10g Release 2 (10.2). http://docs.oracle.com/cd/B19306_01/server.102/b14200/index.htm

Приложение a. Листинги файлов paсk2.Sql

CREATE OR REPLACE PACKAGE pack2 IS

PROCEDURE changekey(num IN NUMBER, newkey IN NUMBER);

FUNCTION maxplane(fly IN NUMBER) RETURN NUMBER;

PROCEDURE eachplane;

END pack2;

/

CREATE OR REPLACE PACKAGE BODY pack2 IS

PROCEDURE changekey(num IN NUMBER, newkey IN NUMBER) IS

fnumber NUMBER;

abc NUMBER;

found_err EXCEPTION;

BEGIN

UPDATE flights SET fid = newkey WHERE fnum = num;

IF SQL%NOTFOUND THEN raise found_err; END IF;

DBMS_OUTPUT.PUT_LINE('New primary key for fligth #' || num || ' is ' || newkey);

COMMIT;

EXCEPTION

WHEN found_err THEN

DBMS_OUTPUT.PUT_LINE('Flight not found.');

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('Error: No Data Found.');

END;

FUNCTION maxplane(fly IN NUMBER) RETURN NUMBER IS

ret NUMBER(4);

found_err2 EXCEPTION;

BEGIN

SELECT MAX(acapacity) INTO ret FROM airplanes

WHERE airplanes.f_id = fly;

IF SQL%NOTFOUND THEN raise found_err2; END IF;

RETURN ret;

EXCEPTION

WHEN found_err2 THEN

DBMS_OUTPUT.PUT_LINE('Flight not found.');

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('Error: No Data Found.');

END;

PROCEDURE eachplane IS

plane NUMBER;

num NUMBER;

retnum NUMBER;

CURSOR curf IS

SELECT fid, fnum from flights;

BEGIN

OPEN curf;

LOOP

FETCH curf INTO plane, num;

EXIT WHEN curf%NOTFOUND;

retnum := pack2.maxplane(plane);

IF (retnum > 0) THEN

dbms_output.put_line('For fligth #' || num || ' airplane -> ' || retnum);

ELSE

dbms_output.put_line('Not found airplane for fligth #' || num);

END IF;

END LOOP;

CLOSE curf;

END;

END pack2;

/

BEGIN

pack1.clear_tables;

pack1.fill_tables;

pack2.eachplane;

pack2.changekey(201,11);

END;

/

Соседние файлы в папке kurs