Advertisement
jurek224466

Zadanie Lab 17.12.2020

Dec 17th, 2020 (edited)
1,237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.07 KB | None | 0 0
  1. --zadanie 223
  2. DECLARE
  3.   TYPE R_OS IS RECORD (
  4.                 id osrodki.id_osrodek%TYPE,
  5.                 nazwa osrodki.nazwa_osrodek%TYPE); -- deklaracja typu rekordowego
  6.   rek_o R_OS;
  7.   TYPE NT_Osrodki IS TABLE OF R_Os ; -- deklaracja typu kolekcji
  8.   NT_Lista NT_Osrodki := NT_Osrodki() ; -- deklaracja kolekcji i jej inicjacja
  9.   CURSOR c1 IS SELECT id_osrodek, nazwa_osrodek FROM Osrodki;
  10. BEGIN
  11.   -- utworzenie elementów kolekcji i nadanie im odpowiednich wartości
  12.   FOR z IN c1 LOOP
  13.     rek_o.id:=z.id_osrodek;
  14.     rek_o.nazwa:=z.nazwa_osrodek;
  15.     NT_Lista.EXTEND ; -- dodanie elementu do kolekcji
  16.     NT_Lista(c1%ROWCOUNT) := rek_o;  -- podstawienie wartości do bieżacego elementu kolekcji
  17.   END LOOP; -- koniec inicjowania elementow kolekcji
  18.   DBMS_OUTPUT.put_line('Liczba elementów to: ' || NT_Lista.COUNT());
  19.   FOR i IN NT_Lista.FIRST..NT_Lista.COUNT() LOOP
  20.     DBMS_OUTPUT.put_line(NT_Lista(i).id || '  ' || NT_Lista(i).nazwa);
  21.   END LOOP;
  22. END ;
  23.  
  24. --zadanie 224
  25. DECLARE
  26.   TYPE R_OS IS RECORD (
  27.                 id osrodki.id_osrodek%TYPE,
  28.                 nazwa osrodki.nazwa_osrodek%TYPE); -- deklaracja typu rekordowego
  29.   rek_o R_OS;
  30.   TYPE NT_Osrodki IS TABLE OF R_Os ; -- deklaracja typu kolekcji
  31.   NT_Lista NT_Osrodki := NT_Osrodki() ; -- deklaracja kolekcji i jej inicjacja
  32.   CURSOR c1 IS SELECT id_osrodek, nazwa_osrodek FROM Osrodki;
  33.   FUNCTION CheckExam(oid osrodki.id_osrodek%TYPE) RETURN BOOLEAN IS
  34.     x NUMBER ;
  35.     BEGIN
  36.         SELECT DISTINCT 1 INTO x FROM egzaminy WHERE id_osrodek = oid ;
  37.         RETURN FALSE ;
  38.     EXCEPTION
  39.         WHEN NO_DATA_FOUND THEN
  40.             RETURN TRUE;
  41.   END ;
  42. BEGIN
  43.   -- utworzenie elementów kolekcji i nadanie im odpowiednich wartości
  44.   FOR z IN c1 LOOP
  45.     rek_o.id:=z.id_osrodek;
  46.     rek_o.nazwa:=z.nazwa_osrodek;
  47.     NT_Lista.EXTEND ; -- dodanie elementu do kolekcji
  48.     NT_Lista(c1%ROWCOUNT) := rek_o;  -- podstawienie wartości do bieżacego elementu kolekcji
  49.   END LOOP; -- koniec inicjowania elementow kolekcji
  50.   DBMS_OUTPUT.put_line('Liczba elementów to: ' || NT_Lista.COUNT());
  51.   FOR i IN NT_Lista.FIRST..NT_Lista.COUNT() LOOP
  52.     DBMS_OUTPUT.put_line(NT_Lista(i).id || '  ' || NT_Lista(i).nazwa);
  53.   END LOOP;
  54.   -- usuniecie osrodkow be egzaminow
  55.   FOR i IN NT_Lista.FIRST..NT_Lista.COUNT() LOOP
  56.     IF CheckExam(NT_Lista(i).id) THEN
  57.         NT_Lista.DELETE(i) ;
  58.     END IF ;
  59.   END LOOP;
  60.   DBMS_OUTPUT.put_line('Liczba elementów po usunięciu: ' || NT_Lista.COUNT());
  61.   FOR i IN NT_Lista.FIRST..NT_Lista.LAST LOOP
  62.     IF NT_Lista.EXISTS(i) THEN
  63.         DBMS_OUTPUT.put_line(NT_Lista(i).id || '  ' || NT_Lista(i).nazwa);
  64.     END IF ;
  65.   END LOOP;
  66. END ;
  67.  
  68. --kod pomocniczy zadanie 225
  69. CREATE OR REPLACE TYPE Typ_Przedmiot_Data
  70.     AS OBJECT (Nazwa VARCHAR2(40), Data_egzaminu DATE);
  71. CREATE OR REPLACE TYPE Typ_ZPD IS TABLE OF Typ_Przedmiot_Data;
  72. CREATE TABLE Indeks ( Id_student VARCHAR2(7) PRIMARY KEY,
  73.                     nazwisko VARCHAR2(25),
  74.                     imie VARCHAR2(15),
  75.                     ZdanePrzedmioty Typ_ZPD ) NESTED TABLE ZdanePrzedmioty STORE AS ZdanePrzed_Tab;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement