PLSQL Rezerwuj Vip


SET SERVEROUTPUT ON

Create OR Replace procedure Rezerwuj_VIP

(

IdGoscia number,

pocz date,

kon date,

kat number

)

AS

b integer;

NumRez integer;

IsVIP number;

Wolny pokoje.id_pokoju%type;

Cursor wolne_pokoje is

SELECT id_pokoju

FROM pokoje

WHERE id_kategorii = kat AND NOT EXISTS

(SELECT 1 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 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 = IdGoscia;

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 NumRez FROM rezerwacje;

INSERT INTO rezerwacje VALUES (NumRez, IdGoscia, pocz, kon);

INSERT INTO r_przydzielona VALUES(NumRez, Wolny);

dbms_output.put_line (`Zarezerwowano Wolny pokoj nr '|| Wolny);

Else

dbms_output.put_line ('Nie ma wolnego pokoju tej kategorii');

SELECT VIP INTO IsVIP FROM goscie WHERE id_goscia = IdGoscia;

If IsVIP = 0 Then

dbms_output.put_line ('Wstawiamy do zamowien');

SELECT nvl(Max(id_rezerwacji) + 1, 1) INTO NumRez FROM rezerwacje;

INSERT INTO rezerwacje VALUES (NumRez, IdGoscia, pocz, kon);

INSERT INTO r_zamowiona VALUES (NumRez, 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 NumRez FROM rezerwacje

WHERE zmiana.id_rezerwacji= rezerwacje.id_rezerwacji;

INSERT INTO r_zamowiona VALUES( NumRez, kat);

DELETE FROM r_przydzielona WHERE id_rezerwacji = NumRez;

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, IdGoscia, pocz, kon);

INSERT INTO r_przydzielona VALUES (b, zmiana.id_pokoju);

dbms_output.put_line('Wstawiamy do rezerwacji przydzielonych '

||IdGoscia);

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, IdGoscia, 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;

---------------------------------------------------

create OR replace trigger daty

before insert OR update of rez_od, rez_do

on rezerwacje

for each row

begin

if( :new.rez_od > :new.rez_do) Then

dbms_output.put_line('zly zakres daty');

Raise_application_error(-20555,' zly zakres daty');

end if;

end;

INSERT INTO rezerwacje VALUES (10,3,'98-4-4','98-4-2');

Zmiana schematyu daty (dla aktualnej sesji)

Alter session set nls_date_format = `yyyy-mm-dd'



Wyszukiwarka

Podobne podstrony:
plsql III
Wykład VIp OS 2009
Rezerwy+wynik
Rezerwy
Aktywa i rezerwy z tytułu odroczonego podatku dochodowego
plsql
Konspekt SUM REZERWY 04 2007, Finansowe
2014 Reforma Narodowych Sił Rezerwowych utworzenie AK
Tab.1.Rośl.mszarna, Notatki, ochrona przyrody, rezerwat-Toporzyk
Rezerwacja pokoju niem
Potwierdzenie rezerwacji (3)
rezerwy wykład 1 ' 03
Odmowa rezerwacji
Rezerwaty Biosfery UNESCO
ZLECENIE REALIZACJI WSTAWKI VIP
PLSQL

więcej podobnych podstron