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 goście.id_goscia, r_przydzielona.id_pokoju,r_przydzielona.id_rezerwacji
FROM pokoje, rezerwacje, goście, 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= goście.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 goście
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 = '|| wolny);
select nvl(Max(id_rezerwacji)+1,1) into numo
from rezerwacje;
insert into rezerwacje
values (numo,pocz,kon,ident);
insert into r_przydzielona
values(numo, wolny);
dbms_output.put_line('Wolny zarezerwowany pokoj nr '|| wolny);
else
dbms_output.put_line ('Nie ma wolnego pokoju ');
select czy_vip into czy from goście
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 values (numo,pocz,kon,ident);
insert into r_zamowiona values (numo, kat);
else --to prawdziwy VIP
dbms_output.put_line('to 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' ||
zmiana.id_goscia);
select nvl(Max(id_rezerwacji)+1,1) into b
from rezerwacje;
insert into rezerwacje
values (b,pocz,kon,ident);
insert into r_przydzielona values (b, zmiana.id_pokoju);
dbms_output.put_line('Wstawiamy do rezerwacji przydzielonych '||ident);
else
dbms_output.put_line('NIemozliwa rezerwacja');
SELECT nvl(Max(id_rezerwacji)+1,1) INTO b
FROM rezerwacje;
insert into rezerwacje
values (b,pocz,kon,ident);
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:
wiek rocerdy i proceduryWymagania zasadnicze i procedura oceny zgodności sprzętu elektrycznegoproceduraMiKTeX 2 4 Installation ProcedureUlotka postępowanie przed TS, procedura i dokumentyThe install procedure of Mapsstandardy procedur medycznychProcedura przyjęciaQ190987 Extended Stored ProceduresProcedura asystowania pielęgniarki przy zmianie opatrunkuprocedura kwalifikowaniaSankcje w prawie administracyjnym i procedura ich wymierzaniawięcej podobnych podstron