Advertisement
Sawy3R11

bazy4_template

May 14th, 2017
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.32 KB | None | 0 0
  1. 1.
  2. CREATE FUNCTION
  3. nowy_klient(nazwa varchar2, adres varchar2)
  4. RETURN INTEGER IS
  5. PRAGMA AUTONOMOUS_TRANSACTION;
  6. id INT;
  7. BEGIN
  8.   SELECT klient_seq.NEXTVAL INTO id FROM dual;
  9.   INSERT INTO KLIENCI VALUES (id, nazwa, adres);
  10.   commit;
  11. END;
  12.  
  13.  
  14. 2.
  15. CREATE PROCEDURE usun_klienta (id INTEGER) IS
  16. BEGIN
  17.     DELETE FROM klienci WHERE id_kl = id;
  18. END;
  19.  
  20. 3.
  21. CREATE TYPE klient AS object (
  22.   id_kl INTEGER,
  23.   nazwa_kl varchar2(64),
  24.   adres varchar2(64)
  25. );
  26.  
  27. CREATE TYPE zbior_klientow AS TABLE OF klient;
  28.  
  29. 4.
  30. CREATE FUNCTION
  31. pokaz_klientow_p(pierwszy INTEGER, liczba INTEGER)
  32. RETURN zbior_klientow AS wynik zbior_klientow;
  33. k klient;
  34. i INT;
  35. cursor c IS SELECT * FROM klienci
  36. WHERE id_kl >= pierwszy ORDER BY id_kl;
  37. BEGIN
  38.   i := liczba; wynik := zbior_klientow();
  39.   k := klient(NULL,NULL,NULL);
  40.   FOR dane IN c loop
  41.     IF i<= 0 THEN exit; END IF;
  42.     i := i-1; wynik.extend;
  43.     k.id_kl := dane.id_kl; k.nazwa_kl:=dane.nazwa_kl;
  44.     k.adres := dane.adres;
  45.     wynik(wynik.COUNT) := k;
  46.   END loop;
  47.   RETURN wynik;
  48. END;
  49.  
  50. 5.
  51.  
  52. CREATE FUNCTION
  53. pokaz_klientow_t(ostatni INTEGER, liczba INTEGER)
  54. RETURN zbior_klientow AS wynik zbior_klientow;
  55. k klient;
  56. i INT;
  57. cursor c IS SELECT * FROM klienci
  58. WHERE id_kl <= ostatni ORDER BY id_kl DESC;
  59. BEGIN
  60.   i := liczba; wynik := zbior_klientow();
  61.   k := klient(NULL,NULL,NULL);
  62.   FOR dane IN c loop
  63.     IF i<= 0 THEN exit; END IF;
  64.     i := i-1; wynik.extend;
  65.     k.id_kl := dane.id_kl; k.nazwa_kl:=dane.nazwa_kl;
  66.     k.adres := dane.adres;
  67.     wynik(wynik.COUNT) := k;
  68.   END loop;
  69.   RETURN wynik;
  70. END;
  71.  
  72.  
  73. 6.
  74. CREATE FUNCTION
  75. aktualizuj_dane_klienta (idt INTEGER, nazwa varchar2, adres_kl varchar2)
  76. RETURN INTEGER IS
  77. PRAGMA AUTONOMOUS_TRANSACTION;
  78. BEGIN
  79.   UPDATE klienci
  80.   SET klienci.nazwa_kl = nazwa, klienci.adres = adres_kl
  81.   WHERE id_kl = idt;
  82.   commit;
  83.   RETURN idt;
  84. END;
  85.  
  86.  
  87. 7.
  88. SELECT nowy_klient('Hubert','Jaroslaw') FROM dual;
  89.  
  90.  
  91. NOWY_KLIENT('HUBERT','JAROSLAW')
  92. --------------------------------
  93.                                8
  94.  
  95.  
  96. CALL usun_klienta(8);
  97.  
  98. usun_klienta 8) succeeded.
  99.  
  100.  
  101.  
  102. SELECT * FROM TABLE(
  103.   CAST(pokaz_klientow_p(2,4) AS zbior_klientow)
  104.   );
  105.  
  106.  
  107.  ID_KL      NAZWA_KL         ADRES                                                          
  108. -------------- --------------- ----------------------------------------------------------------
  109. 2       Hubert          Rzeszów                                                          
  110. 3       Adam            Akademik                                                        
  111. 4       Adam1           Akademik                                                        
  112. 5       Adam2           Akademik
  113.  
  114.  
  115. SELECT * FROM TABLE(
  116.   CAST(pokaz_klientow_t(5,2) AS zbior_klientow)
  117.   );
  118.  
  119. ID_KL NAZWA_KL   ADRES                                                          
  120. ---- ----------- -----------------------------------------------------------------
  121. 5   Adam2    Akademik                                                        
  122. 4   Adam1    Akademik
  123.  
  124.  
  125. SELECT aktualizuj_dane_klienta(5,'Kamil','Krosno') FROM dual;
  126.  
  127. AKTUALIZUJ_DANE_KLIENTA(5,'KAMIL','KROSNO')
  128. -------------------------------------------
  129.                                           5
  130.  
  131. 8.
  132. CREATE FUNCTION
  133.     nowy_wyrob (nazwa varchar2, ilosc INTEGER, dostepne INTEGER, cena NUMBER(6,2))
  134. RETURN INTEGER IS
  135. PRAGMA AUTONOMOUS_TRANSACTION;
  136. id INT;
  137. BEGIN
  138.     SELECT wyrob_seq.NEXTVAL INTO id FROM dual;
  139.     INSERT INTO wyroby VALUES (id,nazwa,ilosc,dostepne, cena);
  140.     commit;
  141.     RETURN id;
  142. END;
  143.  
  144.  
  145. CREATE PROCEDURE usun_wyrob (id INTEGER) IS
  146. BEGIN
  147.     DELETE FROM WYROBY WHERE kod_wyr = id;
  148. END;
  149.  
  150.  
  151. CREATE TYPE wyrob AS object (
  152.   kod_wyr INTEGER,
  153.   nazwa_wyr varchar2(64),
  154.   ilosc NUMBER(6,4),
  155.   dostepne NUMBER(6,4),
  156.   cena_jedn NUMBER(6,2)
  157. );
  158.  
  159. CREATE TYPE zbior_wyrobow AS TABLE OF wyrob;
  160.  
  161.  
  162. CREATE OR REPLACE
  163. FUNCTION pokaz_wyroby_p(pierwszy INTEGER, liczba INTEGER)
  164. RETURN zbior_wyrobow AS wynik zbior_wyrobow;
  165. w wyrob;
  166. i INT;
  167. cursor c IS SELECT * FROM wyroby
  168. WHERE kod_wyr >= pierwszy ORDER BY kod_wyr;
  169. BEGIN
  170.   i := liczba; wynik := zbior_wyrobow();
  171.   w := wyrob(NULL,NULL,NULL,NULL,NULL);
  172.   FOR dane IN c loop
  173.     IF i<= 0 THEN exit; END IF;
  174.     i := i-1; wynik.extend;
  175.     w.kod_wyr := dane.kod_wyr; w.nazwa_wyr:=dane.nazwa_wyr;
  176.     w.ilosc := dane.ilosc; w.dostepne := dane.dostepne;
  177.     w.cena_jedn := dane.cena_jedn;
  178.     wynik(wynik.COUNT) := w;
  179.   END loop;
  180.   RETURN wynik;
  181. END;
  182.  
  183.  
  184. CREATE OR REPLACE
  185. FUNCTION pokaz_wyroby_t(ostatni INTEGER, liczba INTEGER)
  186. RETURN zbior_wyrobow AS wynik zbior_wyrobow;
  187. w wyrob;
  188. i INT;
  189. cursor c IS SELECT * FROM wyroby
  190. WHERE kod_wyr <= ostatni ORDER BY kod_wyr DESC;
  191. BEGIN
  192.   i := liczba; wynik := zbior_wyrobow();
  193.   w := wyrob(NULL,NULL,NULL,NULL,NULL);
  194.   FOR dane IN c loop
  195.     IF i<= 0 THEN exit; END IF;
  196.     i := i-1; wynik.extend;
  197.     w.kod_wyr := dane.kod_wyr; w.nazwa_wyr:=dane.nazwa_wyr;
  198.     w.ilosc := dane.ilosc; w.dostepne := dane.dostepne;
  199.     w.cena_jedn := dane.cena_jedn;
  200.     wynik(wynik.COUNT) := w;
  201.   END loop;
  202.   RETURN wynik;
  203. END;
  204.  
  205.  
  206. CREATE OR REPLACE
  207. FUNCTION aktualizuj_dane_wyrobu(id_wyr INTEGER, nazwa varchar2, il INTEGER, dost INTEGER, cena FLOAT)
  208. RETURN INTEGER IS
  209. PRAGMA AUTONOMOUS_TRANSACTION;
  210. BEGIN
  211.   UPDATE wyroby
  212.   SET wyroby.nazwa_wyr = nazwa, wyroby.ilosc = il,
  213.   wyroby.dostepne = dost, wyroby.cena_jedn = cena
  214.   WHERE wyroby.kod_wyr = id_wyr;
  215.   commit;
  216.   RETURN id_wyr;
  217. END;
  218.  
  219.  
  220. SELECT nowy_wyrob('szynka',12,7,9.99) FROM dual;
  221. SELECT nowy_wyrob('szynka swojska',8,7,19.99) FROM dual;
  222. SELECT nowy_wyrob('szynka extra',1,1,29.99) FROM dual;
  223.  
  224. NOWY_WYROB('SZYNKA',12,7,9.99)
  225. ------------------------------
  226.                              2
  227.  
  228. NOWY_WYROB('SZYNKASWOJSKA',8,7,19.99)
  229. -------------------------------------
  230.                                     3
  231.  
  232. NOWY_WYROB('SZYNKAEXTRA',1,1,29.99)
  233. -----------------------------------
  234.                                   4
  235.  
  236.  
  237. CALL usun_wyrob(2);
  238.  
  239. usun_wyrob 2) succeeded.
  240.  
  241.  
  242.  
  243. SELECT * FROM TABLE(
  244.   CAST(pokaz_wyroby_p(1,2) AS zbior_wyrobow)
  245.   );
  246.  
  247.                               KOD_WYR NAZWA_WYR                                                         ILOSC DOSTEPNE CENA_JEDN
  248. -------------------------------------- ---------------------------------------------------------------- ------ -------- ---------
  249.                                      1 kielbasa                                                             10       10      19,2
  250.                                      3 szynka swojska                                                        8        7     19,99
  251.  
  252. SELECT * FROM TABLE(
  253.   CAST(pokaz_wyroby_t(4,2) AS zbior_wyrobow)
  254.   );
  255.                                KOD_WYR NAZWA_WYR                                                         ILOSC DOSTEPNE CENA_JEDN
  256. -------------------------------------- ---------------------------------------------------------------- ------ -------- ---------
  257.                                      4 szynka extra                                                          1        1     29,99
  258.                                      3 szynka swojska                                                        8        7     19,99
  259.  
  260.  
  261. SELECT aktualizuj_dane_wyrobu(1,'kielbasa wyborcza',20,20,99.99) FROM dual;
  262.  
  263. AKTUALIZUJ_DANE_WYROBU(1,'KIELBASAWYBORCZA',20,20,99.99)
  264. --------------------------------------------------------
  265.                                                        1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement