Create OR Replace procedure Rezerwuj_VIP (ident number, pocz date, kon date, kat number)
as
b integer;
numo integer;
czy number;
wolny pokoje.id_pokoju%type;
Cursor wolne_pokoje is
SELECT id_pokoju
FROM pokoje
WHERE id_kategorii = kat AND NOT EXISTS
(SELECT * FROM rezerwacje,r_przydzielona
WHERE rezerwacje.id_rezerwacji = r_przydzielona.id_rezerwacji
AND r_przydzielona.id_pokoju = pokoje.id_pokoju
AND (kon BETWEEN rezerwacje.rez_od AND rezerwacje.rez_do
OR pocz BETWEEN rezerwacje.rez_od AND rezerwacje.rez_do));
Cursor znajdz is
SELECT goscie.id_goscia, r_przydzielona.id_pokoju, r_przydzielona.id_rezerwacji
FROM pokoje, rezerwacje, goscie, r_przydzielona
WHERE pokoje.id_kategorii = kat
AND r_przydzielona.id_pokoju = pokoje.id_pokoju
AND rezerwacje.id_rezerwacji = r_przydzielona.id_rezerwacji
AND rezerwacje.id_goscia = goscie.id_goscia
AND CZY_VIP = 0
AND pocz BETWEEN rezerwacje.rez_od AND rezerwacje.rez_do
ORDER BY rezerwacje.rez_od DESC;
zmiana znajdz%rowtype;
BEGIN
SELECT Count (1) INTO b
FROM goscie
WHERE id_goscia = ident;
If b > 0 Then
Open wolne_pokoje;
Fetch wolne_pokoje INTO wolny;
If wolne_pokoje%found Then
dbms_output.put_line ('Wolny jest pokoj nr '|| wolny);
SELECT nvl(Max(id_rezerwacji) + 1 , 1) INTO numo FROM rezerwacje;
INSERT INTO rezerwacje VALUES (numo, ident, pocz, kon);
INSERT INTO r_przydzielona VALUES(numo, wolny);
dbms_output.put_line ('Zarezerwowano wolny pokoj nr '|| wolny);
Else
dbms_output.put_line ('Nie ma wolnego pokoju tej kategorii');
SELECT CZY_VIP INTO czy FROM goscie WHERE id_goscia = ident;
If czy = 0 Then
dbms_output.put_line ('Wstawiamy do zamowien');
SELECT nvl(Max(id_rezerwacji) + 1, 1) INTO numo FROM rezerwacje;
INSERT INTO rezerwacje (Id_rezerwacji, Id_Goscia, Rez_od, Rez_do)
VALUES (numo, ident, pocz, kon);
INSERT INTO r_zamowiona VALUES (numo, kat);
Else -- to prawdziwy VIP
dbms_output.put_line ('To jest VIP!');
Open znajdz;
Fetch znajdz INTO zmiana;
If znajdz%found Then
SELECT id_rezerwacji INTO numo FROM rezerwacje
WHERE zmiana.id_rezerwacji= rezerwacje.id_rezerwacji;
INSERT INTO r_zamowiona VALUES( numo, kat);
DELETE FROM r_przydzielona WHERE id_rezerwacji = numo;
dbms_output.put_line('Wstawiamy do rezerwacji zamowionych goscia nr '
||zmiana.id_goscia);
SELECT nvl(Max(id_rezerwacji) + 1, 1) INTO b FROM rezerwacje;
INSERT INTO rezerwacje VALUES (b, ident, pocz, kon);
INSERT INTO r_przydzielona VALUES (b, zmiana.id_pokoju);
dbms_output.put_line('Wstawiamy do rezerwacji przydzielonych goscia nr '
||ident);
Else
dbms_output.put_line('Rezerwacja nie jest mozliwa');
SELECT nvl(Max(id_rezerwacji) + 1, 1) INTO b FROM rezerwacje;
INSERT INTO rezerwacje VALUES (b, ident, pocz, kon);
INSERT INTO r_zamowiona VALUES (b, kat);
End If;
End If;
End If;
Close wolne_pokoje;
Else
dbms_output.put_line('Nie ma takiego goscia');
End If;
End;
Wyszukiwarka
Podobne podstrony:
bird reż clint eastwood 1988czas nosorożca fasle kargadan reż bahman ghobadi 2012ichi zabójca koroshiya 1 reż takashi miike 2001 cd1księżniczka mononoke mononoke hime reż hayao miyazaki cd2Instrukcja do Strefy VIP0 marta25NL chom rozm kod vip licznikDARMOWA STREFA VIP BY GRAFI X (KOD HTML)poprawiony mój avatarw imię ojca in the name of the father reż jim sheridan 1993Czym teraz będą latać nasze VIP ymój sąsiad totoro tonari no totoro reż hayao miyazaki 1988księżniczka mononoke mononoke hime reż hayao miyazaki cd3blaszany bębenek die blechtrommel reż volker schlöndorff 1979księżniczka mononoke mononoke hime reż hayao miyazaki cd1strefa VIP lewin16Samoloty dla VIP ówAnaliza stat wytrz ściany szczelinowej rez HYATTwięcej podobnych podstron