Базы данных SQL-DDL и SQL-DML. Изучение транзакций. Программирование на языке SQL. Консольное приложение (Цикл лабораторных работ). Вариант № 2, страница 11

1 record(s) was(were) updated in MADE_IN

2) Создать хранимую процедуру в соответствии с индивидуальным заданием.

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

SET TERM ^ ;

create or alter procedure BEST_DUET (

    NUMAWAR integer)

as

declare variable MOVIE_ID integer;

declare variable SECOND_MAN integer;

declare variable RAT integer;

declare variable FIRST_MAN integer;

begin

  begin

    for SELECT first 5 AMAN.man_id as first_act, BMAN.man_id as second_act,  SUM(rating.rating) as sum_reit from

        man AMAN, man BMAN, part, career, rating

        WHERE AMAN.man_id = part.man_id AND

        part.film_id IN (SELECT DISTINCT part.film_id FROM part, career

        WHERE part.man_id = BMAN.man_id AND part.role_id = career.id

        and career.name = 'actor') and

        part.role_id = career.id and career.name = 'actor' and

        AMAN.man_id < BMAN.man_id and rating.film_id = part.film_id

        group by first_act, second_act

        ORDER BY sum_reit DESC

    into :first_man, :second_man, :rat do

    begin

          SELECT first 1 film.f_id from film, career,part,man

            WHERE man.man_id =:first_man and man.man_id = part.man_id AND film.f_id = part.film_id and

            part.film_id IN (SELECT DISTINCT film_id FROM part WHERE man_id = :second_man) and

            part.role_id = career.id and career.name = 'actor'

            ORDER BY film.year_of_creation DESC

          into :movie_id;

          if ((select premium.film_id from premium where premium.man_id = :first_man and premium.film_id = :movie_id

            and premium.award_id = :numawar) is null) then

            INSERT INTO premium values (:movie_id, :first_man,:numawar) ;

          if ((select premium.film_id from premium where premium.man_id = :second_man and premium.film_id = :movie_id

            and premium.award_id = :numawar) is null) then

            INSERT INTO premium values (:movie_id, :second_man,:numawar) ;

    end

end

end

^

SET TERM ; ^

GRANT SELECT ON MAN TO PROCEDURE BEST_DUET;

GRANT SELECT ON PART TO PROCEDURE BEST_DUET;

GRANT SELECT ON CAREER TO PROCEDURE BEST_DUET;

GRANT SELECT ON RATING TO PROCEDURE BEST_DUET;

GRANT SELECT ON FILM TO PROCEDURE BEST_DUET;

GRANT SELECT,INSERT ON PREMIUM TO PROCEDURE BEST_DUET;

GRANT EXECUTE ON PROCEDURE BEST_DUET TO SYSDBA;

4.4.Выводы

В результате работы были изучены основные возможности языка PSQL для реализации более сложной обработки данных на стороне сервера с помощью хранимых процедур и триггеров.

Раздел 5.  Консольное приложение для работы с БД

5.1. Цели работы

Изучение технологий работы с базами данных на примере JDBC. Применение полученных знаний для разработки собственного консольного клиента в соответствии с индивидуальным заданием.

5.2. Программа работы

1) Изучить основы Java DataBase Connectivity. 

2) Разместить БД на сервере (tiger.ftk.spbstu.ru:/var/lib/firebird, пользователь: SYSDBA, пароль: masterkey).

3) Установить в среде разработки драйвер JDBC для доступа к БД.

4) Соединиться из среды разработки с созданной ранее в соответствии с индивидуальным заданием БД

5) Разработать полезное и удобное консольное приложение со следующей функциональностью:

- Реализовать функции модификации БД в соответствии с индивидуальным заданием

- Обеспечить поддержку целостности БД при выполнении операций (контроль корректности ссылок при изменении и добавлении записей, проверка входных значений, каскадное удаление зависимых записей)