Advertisement
programajster

Untitled

Jun 12th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 5.73 KB | None | 0 0
  1. -- POKAZ WSZYTKICH KLIENTOW
  2. CREATE OR REPLACE FUNCTION SELECTKLIENCI
  3.  RETURN SYS_REFCURSOR
  4. AS
  5.  MY_CURSOR SYS_REFCURSOR;
  6.  MY_QUERY VARCHAR2(500);
  7. BEGIN
  8.  
  9.  MY_QUERY := 'SELECT * FROM KLIENCI';
  10.  
  11.  OPEN MY_CURSOR FOR MY_QUERY;
  12.  RETURN MY_CURSOR;
  13. END SELECTKLIENCI;
  14. /
  15. -- POKAZ WSZYSTKICH PRACOWNIKOW
  16. CREATE OR REPLACE FUNCTION SELECTPRACOWNICY
  17.  RETURN SYS_REFCURSOR
  18. AS
  19.  MY_CURSOR SYS_REFCURSOR;
  20.  MY_QUERY VARCHAR2(500);
  21. BEGIN
  22.  
  23.  MY_QUERY := 'SELECT * FROM PRACOWNICY';
  24.  
  25.  OPEN MY_CURSOR FOR MY_QUERY;
  26.  RETURN MY_CURSOR;
  27. END SELECTPRACOWNICY;
  28. /
  29. -- POKAZ WSZYSTKIE WYPOZYCZENIA Z FORMATOWANA DATA
  30. CREATE OR REPLACE FUNCTION SELECTWYP
  31.  RETURN SYS_REFCURSOR
  32. AS
  33.  MY_CURSOR SYS_REFCURSOR;
  34.  MY_QUERY VARCHAR2(500);
  35. BEGIN
  36.  
  37.  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]';
  38.  
  39.  OPEN MY_CURSOR FOR MY_QUERY;
  40.  RETURN MY_CURSOR;
  41. END SELECTWYP;
  42. /
  43.  
  44.  
  45. -- KLIENCI TRIGGER ID INCREMENT
  46. CREATE SEQUENCE KLIENCI_SEQ
  47. /
  48. CREATE OR REPLACE TRIGGER KLIENCI_TRIG
  49.  BEFORE INSERT ON KLIENCI
  50.  FOR EACH ROW
  51. BEGIN
  52.     :NEW.ID_KLIENTA := KLIENCI_SEQ.NEXTVAL;
  53. END;
  54. /
  55. -- PRACOWNICY TRIGGER ID INCREMENT
  56. CREATE SEQUENCE PRACOWNICY_SEQ;
  57. /
  58. CREATE OR REPLACE TRIGGER PRACOWNICY_TRIG
  59.  BEFORE INSERT ON PRACOWNICY
  60.  FOR EACH ROW
  61. BEGIN
  62.     :NEW.ID_PRACOWNIKA := PRACOWNICY_SEQ.NEXTVAL;
  63. END;
  64. /
  65.  
  66. -- DODAWANIE NOWEGO KLIENTA DO BAZY
  67. CREATE OR REPLACE PROCEDURE DODAJ_KLIENTA(im VARCHAR, nazw VARCHAR, tel VARCHAR)
  68. AS id_klienta2 NUMBER;
  69.  
  70.  BEGIN
  71.  INSERT INTO KLIENCI(id_klienta, imie, nazwisko, telefon)
  72.  VALUES (id_klienta2,im,nazw,tel);
  73.  id_klienta2 := KLIENCI_SEQ.CURRVAL;
  74. END;
  75. /
  76. -- DODAWANIE NOWEJ PLYTY DO BAZY
  77. CREATE OR REPLACE PROCEDURE DODAJ_PLYTE(tyt VARCHAR, id_gat NUMBER, ops VARCHAR, rok NUMBER, id_wytw NUMBER, ile NUMBER)
  78. AS id_plyty2 NUMBER;
  79.  
  80.  BEGIN
  81.  INSERT INTO PLYTY(id_plyty, tytul, id_gatunku, opis, rok_wydania, id_wytworni, ilosc)
  82.  VALUES (id_plyty2,tyt,id_gat,ops,rok,id_wytw,ile);
  83.  id_plyty2 := PLYTY_SEQ.CURRVAL;
  84. END;
  85. /
  86. -- JAKA NAZWE MA DANE ID GATUNEK
  87. CREATE OR REPLACE FUNCTION SELECTNAZWAGATUNKU(id NUMBER)
  88.  RETURN VARCHAR
  89. AS
  90.  N VARCHAR(50);
  91. BEGIN
  92.  SELECT NAZWA INTO N FROM GATUNKI WHERE ID_GATUNKU = id;
  93.  RETURN N;
  94.  END SELECTNAZWAGATUNKU;
  95. /
  96. -- JAKIE ID MA DANA WYTWORNIA
  97. CREATE OR REPLACE FUNCTION SELECTIDWYTWORNI(wytw VARCHAR)
  98.  RETURN NUMBER
  99. AS
  100.  SZUKANE_ID NUMBER;
  101. BEGIN
  102.  SELECT ID_WYTWORNI INTO SZUKANE_ID FROM WYTWORNIE WHERE NAZWA = wytw;
  103.  RETURN SZUKANE_ID;
  104.  END SELECTIDWYTWORNI;
  105. /
  106. -- JAK SIE NAZYWA DANY KLIENT
  107. CREATE OR REPLACE FUNCTION SELECTNAZWAKLIENTA(id NUMBER)
  108.  RETURN VARCHAR
  109. AS
  110.  N VARCHAR(80);
  111. BEGIN
  112.  SELECT IMIE || ' ' || NAZWISKO INTO N FROM KLIENCI WHERE ID_KLIENTA = id;
  113.  RETURN N;
  114.  END SELECTNAZWAKLIENTA;
  115. /
  116. -- USUN GATUNKI O DANYM ID
  117. CREATE OR REPLACE PROCEDURE USUN_GATUNEK(id NUMBER)
  118.  AS
  119. BEGIN
  120.  DELETE FROM GATUNKI WHERE ID_GATUNKU = id;
  121. END;
  122. /
  123. -- USUN PRACOWNIKOW O DANYM ID
  124. CREATE OR REPLACE PROCEDURE USUN_PRACOWNIKA(id NUMBER)
  125.  AS
  126. BEGIN
  127.  DELETE FROM PRACOWNICY WHERE id_pracownika = id;
  128. END;
  129. /
  130. -- EDYCJA KLIENTA
  131. CREATE OR REPLACE PROCEDURE EDYTUJ_KLIENTA(id NUMBER, eimie VARCHAR, enazwisko VARCHAR, etel VARCHAR)
  132. AS
  133. BEGIN
  134. UPDATE KLIENCI SET IMIE = NVL(eimie, IMIE),
  135.                    NAZWISKO = NVL(enazwisko, NAZWISKO),
  136.                    TELEFON = NVL(etel, TELEFON)
  137.                WHERE ID_KLIENTA = id;
  138. END;
  139. /
  140. -- EDYCJA AKTORA
  141. CREATE OR REPLACE PROCEDURE EDYTUJ_AKTORA(id NUMBER, eimie VARCHAR, enazwisko VARCHAR)
  142. AS
  143. BEGIN
  144. UPDATE AKTORZY SET IMIE = NVL(eimie, IMIE),
  145.                    NAZWISKO = NVL(enazwisko, NAZWISKO)
  146.                WHERE ID_AKTORA = id;
  147. END;
  148. /
  149. -- EDYCJA PLYTY
  150. CREATE OR REPLACE PROCEDURE EDYTUJ_PLYTE(id NUMBER, etytul VARCHAR, eidg NUMBER, eopis VARCHAR, erok NUMBER, eidw NUMBER, eilosc NUMBER)
  151. AS
  152. BEGIN
  153. UPDATE PLYTY SET TYTUL = NVL(etytul, TYTUL),
  154.                  ID_GATUNKU = NVL(eidg, ID_GATUNKU),
  155.                  OPIS = NVL(eopis, OPIS),
  156.                  ROK_WYDANIA = NVL(erok, ROK_WYDANIA),
  157.                  ID_WYTWORNI = NVL(eidw, ID_WYTWORNI),
  158.                  ILOSC = NVL(eilosc, ILOSC)
  159.              WHERE ID_PLYTY = id;
  160. END;
  161. /
  162. -- WSTAWIENIE AKTUALNEJ DATY DO WYP O DANYM ID
  163. CREATE OR REPLACE PROCEDURE EDYTUJ_DATAODDANIA(id NUMBER)
  164. AS
  165. BEGIN
  166. UPDATE WYPOZYCZENIA SET DATA_ODDANIA = SYSDATE()
  167.                     WHERE ID_WYPOZYCZENIA = id;
  168. END;
  169. /
  170. CREATE OR REPLACE TRIGGER ZMIEN_ILOSC_DODAWANIE
  171.  AFTER
  172.   INSERT
  173.  ON WYPOZYCZENIA
  174.  FOR EACH ROW
  175. BEGIN
  176.  IF :NEW.DATA_ODDANIA IS NOT NULL THEN
  177.   UPDATE PLYTY SET ilosc = ilosc+1
  178.                WHERE :NEW.ID_PLYTY = ID_PLYTY;         
  179.   ELSE IF :NEW.DATA_ODDANIA IS NULL THEN
  180.    UPDATE PLYTY SET ilosc = ilosc-1
  181.                WHERE :NEW.ID_PLYTY = ID_PLYTY;
  182.   END IF;
  183.  END IF;
  184. END;
  185. /
  186. -- SELECT FILMY O DANYM ID GATUNKU
  187. CREATE OR REPLACE FUNCTION SELECTGATUNKIFILMY(IDG INT)
  188.  RETURN SYS_REFCURSOR
  189. AS
  190.  MY_CURSOR SYS_REFCURSOR;
  191. BEGIN
  192.  OPEN MY_CURSOR FOR SELECT TYTUL FROM PLYTY WHERE ID_GATUNKU = IDG;
  193.  RETURN MY_CURSOR;
  194. END SELECTGATUNKIFILMY;
  195. /
  196.  
  197. -- SELECT FILMY Z DANYM AKTOREM
  198. CREATE OR REPLACE FUNCTION SELECTAKTORZYFILMY(IDA INT)
  199.  RETURN SYS_REFCURSOR
  200. AS
  201.  MY_CURSOR SYS_REFCURSOR;
  202. BEGIN
  203.  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;
  204.  RETURN MY_CURSOR;
  205. END SELECTAKTORZYFILMY;
  206. /
  207. CREATE OR REPLACE FUNCTION NIEODDANEPLYTY(ile_dni INT)
  208.  RETURN SYS_REFCURSOR
  209. AS
  210.  MY_CURSOR SYS_REFCURSOR;
  211. BEGIN
  212. 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
  213.                     WHERE TRUNC(TRUNC(SYSDATE) - W.DATA_WYPOZYCZENIA,0) > ile_dni
  214.                     AND W.DATA_ODDANIA IS NULL
  215.                     AND W.ID_KLIENTA = K.ID_KLIENTA;
  216. END NIEODDANEPLYTY;
  217. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement