Advertisement
patryk

SBD_L11

May 20th, 2015
548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.38 KB | None | 0 0
  1. --ZAD 1
  2. CREATE OR REPLACE PROCEDURE PODWYZKA (P_ID_ZESP IN NUMBER, P_PODWYZKA IN NUMBER DEFAULT 15) IS
  3. BEGIN
  4.   UPDATE PRACOWNICY P SET P.PLACA_POD = P.PLACA_POD + P.PLACA_POD * P_PODWYZKA / 100
  5.     WHERE P.ID_ZESP = P_ID_ZESP;
  6. END;
  7. /
  8. EXECUTE PODWYZKA(10);
  9.  
  10.  
  11.  
  12. --ZAD 2
  13. CREATE OR REPLACE PROCEDURE PODWYZKA (P_ID_ZESP IN NUMBER, P_PODWYZKA IN NUMBER DEFAULT 15) IS
  14.   P_ILE_W_ZESPOLE NUMBER;
  15. BEGIN
  16.   SELECT COUNT(*) INTO P_ILE_W_ZESPOLE  FROM PRACOWNICY WHERE ID_ZESP = P_ID_ZESP;
  17.  
  18.   IF (P_ILE_W_ZESPOLE = 0) THEN RAISE_APPLICATION_ERROR(-20001, 'BRAK ZESPOLU O PODANYM NUMERZE!');
  19.   END IF;
  20.  
  21.   UPDATE PRACOWNICY P SET P.PLACA_POD = P.PLACA_POD + P.PLACA_POD * P_PODWYZKA / 100
  22.     WHERE P.ID_ZESP = P_ID_ZESP;
  23. END;
  24. /
  25. EXECUTE PODWYZKA(20);
  26.  
  27.  
  28.  
  29. --ZAD 3
  30. CREATE OR REPLACE PROCEDURE LICZBA_PRACOWNIKOW (P_NAZWA_ZESP IN VARCHAR, P_LICZBA_PRACOWNIKOW OUT NUMBER) IS
  31.   P_ILE_W_ZESPOLE NUMBER;
  32. BEGIN
  33.   SELECT COUNT(*) INTO P_ILE_W_ZESPOLE  FROM PRACOWNICY P NATURAL JOIN ZESPOLY Z WHERE Z.NAZWA = P_NAZWA_ZESP;
  34.  
  35.   IF (P_ILE_W_ZESPOLE = 0) THEN RAISE_APPLICATION_ERROR(-20001, 'BRAK ZESPOLU O PODANYM NUMERZE!');
  36.   END IF;
  37.  
  38.   P_LICZBA_PRACOWNIKOW := P_ILE_W_ZESPOLE;
  39. END;
  40. /
  41.  
  42. DECLARE
  43.   V_LICZBA_PRACOWNIKOW NUMBER;
  44. BEGIN
  45.   LICZBA_PRACOWNIKOW('ADMINISTRACJA', V_LICZBA_PRACOWNIKOW);
  46.   DBMS_OUTPUT.PUT_LINE('LICZBA PRACOWNIKOW: ' || V_LICZBA_PRACOWNIKOW);
  47. END;
  48. /
  49.  
  50.  
  51.  
  52. --ZAD 4
  53. CREATE OR REPLACE PROCEDURE NOWY_PRACOWNIK
  54.   (P_NAZWISKO PRACOWNICY.NAZWISKO%TYPE, P_NAZWA_ZESP ZESPOLY.NAZWA%TYPE, P_NAZWISKO_SZEFA PRACOWNICY.NAZWISKO%TYPE, P_PLACA_POD PRACOWNICY.PLACA_POD%TYPE)
  55.   IS
  56.   P_DATA_ZATRUDNIENIA DATE;
  57.   P_ETAT PRACOWNICY.ETAT%TYPE;
  58.   P_ID_ZESP PRACOWNICY.ID_ZESP%TYPE;
  59.   P_ID_SZEFA PRACOWNICY.ID_SZEFA%TYPE;
  60.   P_ID_PRAC PRACOWNICY.ID_PRAC%TYPE;
  61.  
  62. BEGIN
  63.   P_DATA_ZATRUDNIENIA := SYSDATE;
  64.   P_ETAT := 'STAŻYSTA';
  65.  
  66.   SELECT ID_PRAC INTO P_ID_SZEFA FROM PRACOWNICY WHERE NAZWISKO = P_NAZWISKO_SZEFA;
  67.   SELECT ID_ZESP INTO P_ID_ZESP FROM ZESPOLY WHERE NAZWA = P_NAZWA_ZESP;
  68.   SELECT MAX(ID_PRAC) INTO P_ID_PRAC FROM PRACOWNICY;
  69.  
  70.   P_ID_PRAC := P_ID_PRAC + 10;
  71.    
  72.   INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, ETAT, ID_SZEFA, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP)
  73.     VALUES (P_ID_PRAC, P_NAZWISKO, P_ETAT, P_ID_SZEFA, P_DATA_ZATRUDNIENIA, P_PLACA_POD, NULL, P_ID_ZESP);
  74.  
  75. END;
  76. /
  77.  
  78. EXECUTE NOWY_PRACOWNIK('DYNDALSKI', 'ALGORYTMY', 'BLAZEWICZ', 250);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement