PLSQL Rez vip



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 1988
czas nosorożca fasle kargadan reż bahman ghobadi 2012
ichi zabójca koroshiya 1 reż takashi miike 2001 cd1
księżniczka mononoke mononoke hime reż hayao miyazaki cd2
Instrukcja do Strefy VIP
0 marta25NL chom rozm kod vip licznik
DARMOWA STREFA VIP BY GRAFI X (KOD HTML)poprawiony mój avatar
w imię ojca in the name of the father reż jim sheridan 1993
Czym teraz będą latać nasze VIP y
mój sąsiad totoro tonari no totoro reż hayao miyazaki 1988
księżniczka mononoke mononoke hime reż hayao miyazaki cd3
blaszany bębenek die blechtrommel reż volker schlöndorff 1979
księżniczka mononoke mononoke hime reż hayao miyazaki cd1
strefa VIP lewin16
Samoloty dla VIP ów
Analiza stat wytrz ściany szczelinowej rez HYATT

więcej podobnych podstron