Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.
- CREATE FUNCTION
- nowy_klient(nazwa varchar2, adres varchar2)
- RETURN INTEGER IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- id INT;
- BEGIN
- SELECT klient_seq.NEXTVAL INTO id FROM dual;
- INSERT INTO KLIENCI VALUES (id, nazwa, adres);
- commit;
- END;
- 2.
- CREATE PROCEDURE usun_klienta (id INTEGER) IS
- BEGIN
- DELETE FROM klienci WHERE id_kl = id;
- END;
- 3.
- CREATE TYPE klient AS object (
- id_kl INTEGER,
- nazwa_kl varchar2(64),
- adres varchar2(64)
- );
- CREATE TYPE zbior_klientow AS TABLE OF klient;
- 4.
- CREATE FUNCTION
- pokaz_klientow_p(pierwszy INTEGER, liczba INTEGER)
- RETURN zbior_klientow AS wynik zbior_klientow;
- k klient;
- i INT;
- cursor c IS SELECT * FROM klienci
- WHERE id_kl >= pierwszy ORDER BY id_kl;
- BEGIN
- i := liczba; wynik := zbior_klientow();
- k := klient(NULL,NULL,NULL);
- FOR dane IN c loop
- IF i<= 0 THEN exit; END IF;
- i := i-1; wynik.extend;
- k.id_kl := dane.id_kl; k.nazwa_kl:=dane.nazwa_kl;
- k.adres := dane.adres;
- wynik(wynik.COUNT) := k;
- END loop;
- RETURN wynik;
- END;
- 5.
- CREATE FUNCTION
- pokaz_klientow_t(ostatni INTEGER, liczba INTEGER)
- RETURN zbior_klientow AS wynik zbior_klientow;
- k klient;
- i INT;
- cursor c IS SELECT * FROM klienci
- WHERE id_kl <= ostatni ORDER BY id_kl DESC;
- BEGIN
- i := liczba; wynik := zbior_klientow();
- k := klient(NULL,NULL,NULL);
- FOR dane IN c loop
- IF i<= 0 THEN exit; END IF;
- i := i-1; wynik.extend;
- k.id_kl := dane.id_kl; k.nazwa_kl:=dane.nazwa_kl;
- k.adres := dane.adres;
- wynik(wynik.COUNT) := k;
- END loop;
- RETURN wynik;
- END;
- 6.
- CREATE FUNCTION
- aktualizuj_dane_klienta (idt INTEGER, nazwa varchar2, adres_kl varchar2)
- RETURN INTEGER IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- BEGIN
- UPDATE klienci
- SET klienci.nazwa_kl = nazwa, klienci.adres = adres_kl
- WHERE id_kl = idt;
- commit;
- RETURN idt;
- END;
- 7.
- SELECT nowy_klient('Hubert','Jaroslaw') FROM dual;
- NOWY_KLIENT('HUBERT','JAROSLAW')
- --------------------------------
- 8
- CALL usun_klienta(8);
- usun_klienta 8) succeeded.
- SELECT * FROM TABLE(
- CAST(pokaz_klientow_p(2,4) AS zbior_klientow)
- );
- ID_KL NAZWA_KL ADRES
- -------------- --------------- ----------------------------------------------------------------
- 2 Hubert Rzeszów
- 3 Adam Akademik
- 4 Adam1 Akademik
- 5 Adam2 Akademik
- SELECT * FROM TABLE(
- CAST(pokaz_klientow_t(5,2) AS zbior_klientow)
- );
- ID_KL NAZWA_KL ADRES
- ---- ----------- -----------------------------------------------------------------
- 5 Adam2 Akademik
- 4 Adam1 Akademik
- SELECT aktualizuj_dane_klienta(5,'Kamil','Krosno') FROM dual;
- AKTUALIZUJ_DANE_KLIENTA(5,'KAMIL','KROSNO')
- -------------------------------------------
- 5
- 8.
- CREATE FUNCTION
- nowy_wyrob (nazwa varchar2, ilosc INTEGER, dostepne INTEGER, cena NUMBER(6,2))
- RETURN INTEGER IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- id INT;
- BEGIN
- SELECT wyrob_seq.NEXTVAL INTO id FROM dual;
- INSERT INTO wyroby VALUES (id,nazwa,ilosc,dostepne, cena);
- commit;
- RETURN id;
- END;
- CREATE PROCEDURE usun_wyrob (id INTEGER) IS
- BEGIN
- DELETE FROM WYROBY WHERE kod_wyr = id;
- END;
- CREATE TYPE wyrob AS object (
- kod_wyr INTEGER,
- nazwa_wyr varchar2(64),
- ilosc NUMBER(6,4),
- dostepne NUMBER(6,4),
- cena_jedn NUMBER(6,2)
- );
- CREATE TYPE zbior_wyrobow AS TABLE OF wyrob;
- CREATE OR REPLACE
- FUNCTION pokaz_wyroby_p(pierwszy INTEGER, liczba INTEGER)
- RETURN zbior_wyrobow AS wynik zbior_wyrobow;
- w wyrob;
- i INT;
- cursor c IS SELECT * FROM wyroby
- WHERE kod_wyr >= pierwszy ORDER BY kod_wyr;
- BEGIN
- i := liczba; wynik := zbior_wyrobow();
- w := wyrob(NULL,NULL,NULL,NULL,NULL);
- FOR dane IN c loop
- IF i<= 0 THEN exit; END IF;
- i := i-1; wynik.extend;
- w.kod_wyr := dane.kod_wyr; w.nazwa_wyr:=dane.nazwa_wyr;
- w.ilosc := dane.ilosc; w.dostepne := dane.dostepne;
- w.cena_jedn := dane.cena_jedn;
- wynik(wynik.COUNT) := w;
- END loop;
- RETURN wynik;
- END;
- CREATE OR REPLACE
- FUNCTION pokaz_wyroby_t(ostatni INTEGER, liczba INTEGER)
- RETURN zbior_wyrobow AS wynik zbior_wyrobow;
- w wyrob;
- i INT;
- cursor c IS SELECT * FROM wyroby
- WHERE kod_wyr <= ostatni ORDER BY kod_wyr DESC;
- BEGIN
- i := liczba; wynik := zbior_wyrobow();
- w := wyrob(NULL,NULL,NULL,NULL,NULL);
- FOR dane IN c loop
- IF i<= 0 THEN exit; END IF;
- i := i-1; wynik.extend;
- w.kod_wyr := dane.kod_wyr; w.nazwa_wyr:=dane.nazwa_wyr;
- w.ilosc := dane.ilosc; w.dostepne := dane.dostepne;
- w.cena_jedn := dane.cena_jedn;
- wynik(wynik.COUNT) := w;
- END loop;
- RETURN wynik;
- END;
- CREATE OR REPLACE
- FUNCTION aktualizuj_dane_wyrobu(id_wyr INTEGER, nazwa varchar2, il INTEGER, dost INTEGER, cena FLOAT)
- RETURN INTEGER IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- BEGIN
- UPDATE wyroby
- SET wyroby.nazwa_wyr = nazwa, wyroby.ilosc = il,
- wyroby.dostepne = dost, wyroby.cena_jedn = cena
- WHERE wyroby.kod_wyr = id_wyr;
- commit;
- RETURN id_wyr;
- END;
- SELECT nowy_wyrob('szynka',12,7,9.99) FROM dual;
- SELECT nowy_wyrob('szynka swojska',8,7,19.99) FROM dual;
- SELECT nowy_wyrob('szynka extra',1,1,29.99) FROM dual;
- NOWY_WYROB('SZYNKA',12,7,9.99)
- ------------------------------
- 2
- NOWY_WYROB('SZYNKASWOJSKA',8,7,19.99)
- -------------------------------------
- 3
- NOWY_WYROB('SZYNKAEXTRA',1,1,29.99)
- -----------------------------------
- 4
- CALL usun_wyrob(2);
- usun_wyrob 2) succeeded.
- SELECT * FROM TABLE(
- CAST(pokaz_wyroby_p(1,2) AS zbior_wyrobow)
- );
- KOD_WYR NAZWA_WYR ILOSC DOSTEPNE CENA_JEDN
- -------------------------------------- ---------------------------------------------------------------- ------ -------- ---------
- 1 kielbasa 10 10 19,2
- 3 szynka swojska 8 7 19,99
- SELECT * FROM TABLE(
- CAST(pokaz_wyroby_t(4,2) AS zbior_wyrobow)
- );
- KOD_WYR NAZWA_WYR ILOSC DOSTEPNE CENA_JEDN
- -------------------------------------- ---------------------------------------------------------------- ------ -------- ---------
- 4 szynka extra 1 1 29,99
- 3 szynka swojska 8 7 19,99
- SELECT aktualizuj_dane_wyrobu(1,'kielbasa wyborcza',20,20,99.99) FROM dual;
- AKTUALIZUJ_DANE_WYROBU(1,'KIELBASAWYBORCZA',20,20,99.99)
- --------------------------------------------------------
- 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement