Advertisement
patryk

SBD_L09

May 6th, 2015
574
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.48 KB | None | 0 0
  1. -- ZAD 1
  2. DECLARE
  3.   CURSOR C_PRAC
  4.    IS SELECT NAZWISKO, ZATRUDNIONY FROM PRACOWNICY WHERE ETAT = 'ASYSTENT';
  5.  
  6.   V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
  7.   V_DATA PRACOWNICY.ZATRUDNIONY%TYPE;
  8.  
  9. BEGIN
  10.   OPEN C_PRAC;
  11.   LOOP
  12.     FETCH C_PRAC INTO V_NAZWISKO, V_DATA;
  13.     EXIT WHEN C_PRAC%NOTFOUND;
  14.     DBMS_OUTPUT.PUT_LINE(V_NAZWISKO || ' pracuje od ' || V_DATA);
  15.   END LOOP;
  16.   CLOSE C_PRAC;
  17. END;
  18. /
  19.  
  20. -- ZAD 2
  21. DECLARE
  22.   CURSOR C_PRAC
  23.     IS SELECT NAZWISKO FROM PRACOWNICY ORDER BY PLACA_POD DESC;
  24.  
  25.   V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
  26. BEGIN
  27.   OPEN C_PRAC;
  28.   LOOP
  29.     FETCH C_PRAC INTO V_NAZWISKO;
  30.    
  31.     IF (C_PRAC%ROWCOUNT = 4) THEN
  32.       EXIT;
  33.     END IF;
  34.    
  35.     DBMS_OUTPUT.PUT_LINE(C_PRAC%ROWCOUNT || ' : ' || V_NAZWISKO);
  36.   END LOOP;
  37.   CLOSE C_PRAC;
  38. END;
  39. /
  40.  
  41. -- ZAD 3
  42. DECLARE
  43.  
  44.   CURSOR C_PRAC IS SELECT * FROM PRACOWNICY
  45.     FOR UPDATE;
  46.  
  47. BEGIN
  48.   FOR C_REKORD IN C_PRAC LOOP
  49.     IF ( TO_CHAR(C_REKORD.ZATRUDNIONY, 'DAY') = 'PONIEDZIAŁEK' ) THEN
  50.       UPDATE PRACOWNICY SET PLACA_POD = PLACA_POD + PLACA_POD * 0.2
  51.         WHERE CURRENT OF C_PRAC;
  52.     END IF;
  53.   END LOOP;
  54. END;
  55. /
  56.  
  57. -- ZAD 4
  58. DECLARE
  59.  
  60.   CURSOR C_PRAC IS SELECT * FROM PRACOWNICY JOIN ZESPOLY USING(ID_ZESP)
  61.     FOR UPDATE OF PLACA_POD;
  62.    
  63. BEGIN
  64.   FOR C_REKORD IN C_PRAC LOOP
  65.     IF (C_REKORD.NAZWA = 'ALGORYTMY') THEN
  66.       UPDATE PRACOWNICY SET PLACA_DOD = PLACA_DOD + 100 WHERE CURRENT OF C_PRAC;
  67.     END IF;
  68.    
  69.     IF(C_REKORD.NAZWA = 'ADMINISTRACJA') THEN
  70.       UPDATE PRACOWNICY SET PLACA_DOD = PLACA_DOD + 150 WHERE CURRENT OF C_PRAC;
  71.     END IF;
  72.   END LOOP;
  73. END;
  74. /
  75.  
  76. -- ZAD 5
  77. DECLARE
  78.  
  79.   CURSOR C_PRAC(P_ETAT VARCHAR) IS SELECT NAZWISKO FROM PRACOWNICY WHERE ETAT = P_ETAT;
  80.   V_ETAT PRACOWNICY.ETAT%TYPE;
  81.   V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
  82.  
  83. BEGIN
  84.   V_ETAT := '&ETAT';
  85.  
  86.   OPEN C_PRAC(V_ETAT);
  87.  
  88.   LOOP
  89.     FETCH C_PRAC INTO V_NAZWISKO;
  90.     EXIT WHEN C_PRAC%NOTFOUND;
  91.     DBMS_OUTPUT.PUT_LINE(V_NAZWISKO);
  92.    
  93.   END LOOP;
  94.   CLOSE C_PRAC;
  95. END;
  96. /
  97.  
  98. -- ZAD 6
  99. DECLARE
  100.  
  101.   CURSOR C_PRAC IS SELECT ETAT, ID_PRAC, NAZWISKO, PLACA_POD + NVL(PLACA_DOD, 0) AS PENSJA FROM PRACOWNICY;
  102.   CURSOR C_ETAT IS SELECT NAZWA FROM ETATY;
  103.  
  104. BEGIN
  105.   FOR C_REKORD IN C_ETAT LOOP
  106.     DBMS_OUTPUT.PUT_LINE('ETAT: ' || C_REKORD.NAZWA);
  107.    
  108.     FOR C_REC2 IN C_PRAC LOOP
  109.       IF (C_REC2.ETAT = C_REKORD.NAZWA) THEN
  110.         DBMS_OUTPUT.PUT_LINE(C_PRAC%ROWCOUNT || ' ' || C_REC2.NAZWISKO || ', pensja: ' || C_REC2.PENSJA);
  111.       END IF;
  112.     END LOOP;
  113.    
  114.   END LOOP;
  115. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement