SEKWENCJE
create sequence film_sekw increment by 1 start with 005;
insert into film values
(film_sekw.nextval, `Mulholland Drive', `Lynch', `psychologiczny', `USA', 2002, '02:30', `brak', 10, `nie');
create sequence pracownik_sekw increment by 1 start with 10;
insert into film values (pracownik_sekw.NEXTVAL, 'Fijałkowska', 'Ewa');
WYZWALACZE
CREATE TRIGGER wyzw_f_cena AFTER INSERT ON wizyta
BEGIN
IF :NEW.cena<0 THEN
RAISE_APPLICATION_ERROR (-20020,'Cena nie może być wartością ujemną'))
ENDIF;
END;
CREATE TRIGGER wyzw_wyp_update AFTER UPDATE OF wypożyczenie
Begin
Update kaseta set kas_czy_wypożyczono = `nie' WHERE kas_f_id = :new. wyp_kas_id;
END;
PROCEDURY
CREATE OR REPLACE PROCEDURE DodajNowyFilm
( p_tytul film.f_tytuł%TYPE,
p_reżyser film.f_rezyser%TYPE,
p_gatunek film.f_gatunek%TYPE,
p_kraj film.f_kraj%TYPE,
p_rok film.f_rok%TYPE,
p_czas film.f_czas%TYPE,
p_uwagi film.f_uwagi%TYPE,
p_cena film.f_cena%TYPE,
p_czy_wyp film.f_czy_wyp%TYPE
) AS
BEGIN
INSERT INTO film (f_id, f_tytuł, f_reżyser, f_gatunek, f_kraj, f_rok, f_czas, f_uwagi, f)
VALUES (film_sekwencja.nextval, p_tytul, p_rezyser, p_gatunek, p_kraj, p_rok, p_czas, p_uwagi,
p_cena, p_czy_wyp);
COMMIT;
END DodajNowyFilm;
/
BEGIN
DodajNowyFilm ('SW', 'Luca', 'sf', `USA', 1977, `02:10');
END;
/
ROLLBACK;
CREATE OR REPLACE PROCEDURE DodajNowegoLekarza (
pl_PeselL lekarz.PeselL%TYPE
pl_Nazwisko lekarz.Nazwisko%TYPE
pl_Imie lekarz.Imie%TYPE
pl_TytulNaukowy lekarz.TytulNaukowy%TYPE
pl_Ulica lekarz.Ulica%TYPE
pl_NrDomu lekarz.NrDomu%TYPE
pl_KodPocztowy lekarz.KodPocztowy%TYPE
pl_Miasto lekarz.Miasto%TYPE
pl_Telefon lekarz.Telefon%TYPE
pl_Uwagi lekarz.Uwagi%TYPE) AS
BEGIN
INSERT INTO lekarz (IdLekarza, PeselP, Nazwisko, Imie, TytulNaukowy, Ulica, NrDomu, KodPocztowy, Miasto, Telefon, Uwagi)
VALUES (lekarz_seq.NEXTVAL, pl_PeselP, pl_Nazwisko, pl_Imie, pl_TytulNaukowy, pl_Ulica, pl_NrDomu, pl_KodPocztowy, pl_Miasto, pl_Telefon, pl_Uwagi);
COMMIT;
END DodajNowegoLekarza;
- przykładowe użycie
BEGIN
DodajNowegoLekarza (55020312567, 'Iwanow', 'Wadim', 'lek.med.', 'POW', '1', 42200, 'Częstochowa', 3616843, 'Ukraina');
END;