Advertisement
Guest User

Untitled

a guest
Jun 12th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.62 KB | None | 0 0
  1. SET SERVEROUTPUT ON
  2.  
  3. --kolokwium I, grupa 1
  4. --zad 1
  5. DECLARE
  6.     n INT := '&podaj_n';
  7.     x NUMBER(5,2) := '&podaj_x';
  8.     wyraz NUMBER(7,2) := 1.0;
  9.     wynik NUMBER(7,2) := 1.0;
  10. BEGIN
  11.     FOR i IN 1..n LOOP
  12.         wyraz := wyraz * ( (x - 1) / (n * x));
  13.         wynik := wynik + wyraz;
  14.     END LOOP;
  15.     DBMS_OUTPUT.put_line('Wynik: ' || wynik);
  16. END;
  17.  
  18. --zad2_1
  19. DECLARE
  20.     CURSOR kursor IS
  21.         SELECT COUNT(u.id_ucznia) AS ilosc, n.nazwisko, n.imie
  22.         FROM uczniowie u
  23.         JOIN klasy k ON k.id_klasy = u.id_klasy
  24.         JOIN nauczyciele n ON n.id_nauczyciela = k.id_nauczyciela
  25.         WHERE k.nazwa = 'IVb'
  26.         GROUP BY  n.nazwisko, n.imie;
  27.     dane kursor % ROWTYPE;
  28. BEGIN
  29.     OPEN kursor;
  30.     FETCH kursor INTO dane;
  31.     CLOSE kursor;
  32.     DBMS_OUTPUT.put_line(dane.ilosc || dane.nazwisko || dane.imie);
  33. END;
  34.  
  35. --zad2_1
  36. DECLARE
  37.     CURSOR kursor IS
  38.         SELECT COUNT(u.id_ucznia) AS ilosc, n.nazwisko, n.imie
  39.         FROM uczniowie u
  40.         JOIN klasy k ON k.id_klasy = u.id_klasy
  41.         JOIN nauczyciele n ON n.id_nauczyciela = k.id_nauczyciela
  42.         WHERE k.nazwa = 'IVb'
  43.         GROUP BY  n.nazwisko, n.imie;
  44.     TYPE MojRekord IS RECORD (
  45.         ilosc INT,
  46.         imie VARCHAR2(20),
  47.         nazwisko VARCHAR2(20)
  48.     );
  49.     dane MojRekord;
  50. BEGIN
  51.     OPEN kursor;
  52.     FETCH kursor INTO dane;
  53.     CLOSE kursor;
  54.     DBMS_OUTPUT.put_line(dane.ilosc || dane.nazwisko || dane.imie);
  55. END;
  56.  
  57. --zad3
  58. DECLARE
  59.     CURSOR ocenki(klasa IN VARCHAR2) IS
  60.         SELECT  u.id_ucznia, p.id_przedmiotu, o.ocena
  61.         FROM oceny o
  62.         JOIN przedmioty p ON p.id_przedmiot = o.id_przedmiotu
  63.         JOIN uczniowie u ON u.id_ucznia = o.id_ucznia
  64.         JOIN klasy k ON k.id_klasy = u.id_klasy
  65.         WHERE p.nazwa = 'matematyka' AND k.nazwa = klasa
  66.         FOR UPDATE;
  67.     dane ocenki % ROWTYPE;
  68.     nowaocena NUMBER(2,1);
  69. BEGIN
  70.     OPEN ocenki('IVb');
  71.     LOOP
  72.     EXIT WHEN oceny % NOTFOUND;
  73.         FETCH ocenki INTO dane;
  74.         IF dane.ocena < 5 THEN
  75.             UPDATE oceny SET oceny.ocena = oceny.ocena + 1
  76.             WHERE CURRENT OF ocenki
  77.             RETURNING ocena INTO nowaocena;
  78.             DBMS_OUTPUT.put_line(id_ucznia || id_przedmiotu || ocena || nowaocena);
  79.         END IF;
  80.     END LOOP;
  81.     CLOSE ocenki;
  82. END;
  83.  
  84. --4
  85. DECLARE
  86.     CURSOR kursor IS
  87.         SELECT k.nazwa, AVG(o.ocena) AS srednia
  88.         FROM klasa k
  89.         JOIN uczniowie u ON u.id_klasy = k.id_klasy
  90.         JOIN oceny o ON o.id_ucznia = u.id_ucznia
  91.         GROUP BY k.nazwa;
  92. BEGIN
  93.     FOR i IN kursor LOOP
  94.         DBMS_OUTPUT.put_line(i.nazwa || i.srednia);
  95.     END LOOP;
  96. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement