Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- POKAZ WSZYTKICH KLIENTOW
- CREATE OR REPLACE FUNCTION SELECTKLIENCI
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- MY_QUERY VARCHAR2(500);
- BEGIN
- MY_QUERY := 'SELECT * FROM KLIENCI';
- OPEN MY_CURSOR FOR MY_QUERY;
- RETURN MY_CURSOR;
- END SELECTKLIENCI;
- /
- -- POKAZ WSZYSTKICH PRACOWNIKOW
- CREATE OR REPLACE FUNCTION SELECTPRACOWNICY
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- MY_QUERY VARCHAR2(500);
- BEGIN
- MY_QUERY := 'SELECT * FROM PRACOWNICY';
- OPEN MY_CURSOR FOR MY_QUERY;
- RETURN MY_CURSOR;
- END SELECTPRACOWNICY;
- /
- -- POKAZ WSZYSTKIE WYPOZYCZENIA Z FORMATOWANA DATA
- CREATE OR REPLACE FUNCTION SELECTWYP
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- MY_QUERY VARCHAR2(500);
- BEGIN
- MY_QUERY := q'[SELECT ID_WYPOZYCZENIA, ID_PLYTY, TO_CHAR(DATA_WYPOZYCZENIA,'yyyy-mm-dd hh24:mi') AS DATA_WYPOZYCZENIA, TO_CHAR(DATA_ODDANIA,'yyyy-mm-dd hh24:mi') AS DATA_ODDANIA, ID_KLIENTA, ID_PRACOWNIKA FROM WYPOZYCZENIA]';
- OPEN MY_CURSOR FOR MY_QUERY;
- RETURN MY_CURSOR;
- END SELECTWYP;
- /
- -- KLIENCI TRIGGER ID INCREMENT
- CREATE SEQUENCE KLIENCI_SEQ
- /
- CREATE OR REPLACE TRIGGER KLIENCI_TRIG
- BEFORE INSERT ON KLIENCI
- FOR EACH ROW
- BEGIN
- :NEW.ID_KLIENTA := KLIENCI_SEQ.NEXTVAL;
- END;
- /
- -- PRACOWNICY TRIGGER ID INCREMENT
- CREATE SEQUENCE PRACOWNICY_SEQ;
- /
- CREATE OR REPLACE TRIGGER PRACOWNICY_TRIG
- BEFORE INSERT ON PRACOWNICY
- FOR EACH ROW
- BEGIN
- :NEW.ID_PRACOWNIKA := PRACOWNICY_SEQ.NEXTVAL;
- END;
- /
- -- DODAWANIE NOWEGO KLIENTA DO BAZY
- CREATE OR REPLACE PROCEDURE DODAJ_KLIENTA(im VARCHAR, nazw VARCHAR, tel VARCHAR)
- AS id_klienta2 NUMBER;
- BEGIN
- INSERT INTO KLIENCI(id_klienta, imie, nazwisko, telefon)
- VALUES (id_klienta2,im,nazw,tel);
- id_klienta2 := KLIENCI_SEQ.CURRVAL;
- END;
- /
- -- DODAWANIE NOWEJ PLYTY DO BAZY
- CREATE OR REPLACE PROCEDURE DODAJ_PLYTE(tyt VARCHAR, id_gat NUMBER, ops VARCHAR, rok NUMBER, id_wytw NUMBER, ile NUMBER)
- AS id_plyty2 NUMBER;
- BEGIN
- INSERT INTO PLYTY(id_plyty, tytul, id_gatunku, opis, rok_wydania, id_wytworni, ilosc)
- VALUES (id_plyty2,tyt,id_gat,ops,rok,id_wytw,ile);
- id_plyty2 := PLYTY_SEQ.CURRVAL;
- END;
- /
- -- JAKA NAZWE MA DANE ID GATUNEK
- CREATE OR REPLACE FUNCTION SELECTNAZWAGATUNKU(id NUMBER)
- RETURN VARCHAR
- AS
- N VARCHAR(50);
- BEGIN
- SELECT NAZWA INTO N FROM GATUNKI WHERE ID_GATUNKU = id;
- RETURN N;
- END SELECTNAZWAGATUNKU;
- /
- -- JAKIE ID MA DANA WYTWORNIA
- CREATE OR REPLACE FUNCTION SELECTIDWYTWORNI(wytw VARCHAR)
- RETURN NUMBER
- AS
- SZUKANE_ID NUMBER;
- BEGIN
- SELECT ID_WYTWORNI INTO SZUKANE_ID FROM WYTWORNIE WHERE NAZWA = wytw;
- RETURN SZUKANE_ID;
- END SELECTIDWYTWORNI;
- /
- -- JAK SIE NAZYWA DANY KLIENT
- CREATE OR REPLACE FUNCTION SELECTNAZWAKLIENTA(id NUMBER)
- RETURN VARCHAR
- AS
- N VARCHAR(80);
- BEGIN
- SELECT IMIE || ' ' || NAZWISKO INTO N FROM KLIENCI WHERE ID_KLIENTA = id;
- RETURN N;
- END SELECTNAZWAKLIENTA;
- /
- -- USUN GATUNKI O DANYM ID
- CREATE OR REPLACE PROCEDURE USUN_GATUNEK(id NUMBER)
- AS
- BEGIN
- DELETE FROM GATUNKI WHERE ID_GATUNKU = id;
- END;
- /
- -- USUN PRACOWNIKOW O DANYM ID
- CREATE OR REPLACE PROCEDURE USUN_PRACOWNIKA(id NUMBER)
- AS
- BEGIN
- DELETE FROM PRACOWNICY WHERE id_pracownika = id;
- END;
- /
- -- EDYCJA KLIENTA
- CREATE OR REPLACE PROCEDURE EDYTUJ_KLIENTA(id NUMBER, eimie VARCHAR, enazwisko VARCHAR, etel VARCHAR)
- AS
- BEGIN
- UPDATE KLIENCI SET IMIE = NVL(eimie, IMIE),
- NAZWISKO = NVL(enazwisko, NAZWISKO),
- TELEFON = NVL(etel, TELEFON)
- WHERE ID_KLIENTA = id;
- END;
- /
- -- EDYCJA AKTORA
- CREATE OR REPLACE PROCEDURE EDYTUJ_AKTORA(id NUMBER, eimie VARCHAR, enazwisko VARCHAR)
- AS
- BEGIN
- UPDATE AKTORZY SET IMIE = NVL(eimie, IMIE),
- NAZWISKO = NVL(enazwisko, NAZWISKO)
- WHERE ID_AKTORA = id;
- END;
- /
- -- EDYCJA PLYTY
- CREATE OR REPLACE PROCEDURE EDYTUJ_PLYTE(id NUMBER, etytul VARCHAR, eidg NUMBER, eopis VARCHAR, erok NUMBER, eidw NUMBER, eilosc NUMBER)
- AS
- BEGIN
- UPDATE PLYTY SET TYTUL = NVL(etytul, TYTUL),
- ID_GATUNKU = NVL(eidg, ID_GATUNKU),
- OPIS = NVL(eopis, OPIS),
- ROK_WYDANIA = NVL(erok, ROK_WYDANIA),
- ID_WYTWORNI = NVL(eidw, ID_WYTWORNI),
- ILOSC = NVL(eilosc, ILOSC)
- WHERE ID_PLYTY = id;
- END;
- /
- -- WSTAWIENIE AKTUALNEJ DATY DO WYP O DANYM ID
- CREATE OR REPLACE PROCEDURE EDYTUJ_DATAODDANIA(id NUMBER)
- AS
- BEGIN
- UPDATE WYPOZYCZENIA SET DATA_ODDANIA = SYSDATE()
- WHERE ID_WYPOZYCZENIA = id;
- END;
- /
- CREATE OR REPLACE TRIGGER ZMIEN_ILOSC_DODAWANIE
- AFTER
- INSERT
- ON WYPOZYCZENIA
- FOR EACH ROW
- BEGIN
- IF :NEW.DATA_ODDANIA IS NOT NULL THEN
- UPDATE PLYTY SET ilosc = ilosc+1
- WHERE :NEW.ID_PLYTY = ID_PLYTY;
- ELSE IF :NEW.DATA_ODDANIA IS NULL THEN
- UPDATE PLYTY SET ilosc = ilosc-1
- WHERE :NEW.ID_PLYTY = ID_PLYTY;
- END IF;
- END IF;
- END;
- /
- -- SELECT FILMY O DANYM ID GATUNKU
- CREATE OR REPLACE FUNCTION SELECTGATUNKIFILMY(IDG INT)
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- BEGIN
- OPEN MY_CURSOR FOR SELECT TYTUL FROM PLYTY WHERE ID_GATUNKU = IDG;
- RETURN MY_CURSOR;
- END SELECTGATUNKIFILMY;
- /
- -- SELECT FILMY Z DANYM AKTOREM
- CREATE OR REPLACE FUNCTION SELECTAKTORZYFILMY(IDA INT)
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- BEGIN
- OPEN MY_CURSOR FOR SELECT DISTINCT P.TYTUL FROM PLYTY P ,FILM_AKTORZY FA WHERE P.ID_PLYTY =FA.ID_FILMU AND FA.ID_AKTORA = IDA;
- RETURN MY_CURSOR;
- END SELECTAKTORZYFILMY;
- /
- CREATE OR REPLACE FUNCTION NIEODDANEPLYTY(ile_dni INT)
- RETURN SYS_REFCURSOR
- AS
- MY_CURSOR SYS_REFCURSOR;
- BEGIN
- OPEN MY_CURSOR FOR SELECT TRUNC(TRUNC(SYSDATE) - W.DATA_WYPOZYCZENIA,0) AS DNI, W.ID_WYPOZYCZENIA AS ID_WYP, K.IMIE || ' ' || K.NAZWISKO AS Klient FROM WYPOZYCZENIA W, KLIENCI K
- WHERE TRUNC(TRUNC(SYSDATE) - W.DATA_WYPOZYCZENIA,0) > ile_dni
- AND W.DATA_ODDANIA IS NULL
- AND W.ID_KLIENTA = K.ID_KLIENTA;
- END NIEODDANEPLYTY;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement