Kierunek: Informatyka III
Przedmiot: Bazy danych
Opole 2013
POLITECHNIKA OPOLSKA
Ćwiczenie 7
Wykonał:
Adam Czech
Kierunek: Informatyka III
Przedmiot: Bazy danych
1
1. Zadania do wykonania
Korzystając z pętli FOR wypisać liczby pierwsze z zakresu od 0 do a, gdzie a-liczba
naturalna podana z klawiatury.
Zdefiniować własny wyjątek za_malo_pracownikow. Obliczyć ilość pracowników
w każdym zespole. Jeśli w którymś zespole jest mniej niż trzech pracowników
zasygnalizować wystąpienie wyjątku. Użytkownik może wywoływać ręcznie
zarówno błędy systemowe, jak i zdefiniowane przez siebie. Każdy wywołany błąd
powinien zostać obsłużony przez odpowiednią procedurę obsługi wyjątku.
2. Zadania wykonane
Korzystając z pętli FOR wypisać liczby pierwsze z zakresu od 0 do a, gdzie a-liczba
naturalna podana z klawiatury.
Kierunek: Informatyka III
Przedmiot: Bazy danych
2
DECLARE
a INTEGER;
reszta NUMBER;
dzieli_sie VARCHAR2(1);
BEGIN
DBMS_OUTPUT.PUT_LINE('Podaj libczê wiêksz¹ od 2:');
a:=&liczba; -- wczytanie liczby z klawiatury
IF a < 3 THEN -- dopilnowane, aby byla wieksza, niz 2 ( inaczej algorytm nie ma sensu )
DBMS_OUTPUT.PUT_LINE('Podana liczba musi byæ wiêksza ni¿ 2!');
RETURN;
END IF;
FOR i IN 2..a LOOP -- petla pierwsza, ktora generuje zakres liczb od 2 do podanej z klawiatury
dzieli_sie:='n'; -- liczby z tego zakresu beda kolejno sprawdzane w drugiej, zagniezdzonej petli
FOR j IN 2..i LOOP -- pod katem podzielnosci przez wszystkie liczby miedzy 2 i soba, ktorych to
liczb
IF j!=i THEN -- dostarcza iterator j
reszta:=i MOD j; -- podzielnosc sprawdzana poprzez wynik reszty z dzielenia
IF reszta=0 THEN -- decyzja o wypisaniu liczby podejmowana na podstawie zawartosci zmiennej
znakowej
dzieli_sie:='t'; -- traktowanej jako zmienna logiczna.
END IF;
END IF;
END LOOP;
IF dzieli_sie='n' THEN
DBMS_OUTPUT.PUT_LINE(i);
END IF;
END LOOP;
END;
/
Kierunek: Informatyka III
Przedmiot: Bazy danych
3
Zdefiniować własny wyjątek za_malo_pracownikow. Obliczyć ilość pracowników
w każdym zespole. Jeśli w którymś zespole jest mniej niż trzech pracowników
zasygnalizować wystąpienie wyjątku. Użytkownik może wywoływać ręcznie
zarówno błędy systemowe, jak i zdefiniowane przez siebie. Każdy wywołany błąd
powinien zostać obsłużony przez odpowiednią procedurę obsługi wyjątku.
DECLARE
V_A NUMBER:=0;
ZA_MALO_PRACOWNIKOW EXCEPTION;
V_LICZBA NUMBER := &LICZBA;
BEGIN
SELECT COUNT(*) INTO V_A FROM PRAC WHERE ID_ZESP = V_LICZBA;
IF(V_A<3) THEN
RAISE ZA_MALO_PRACOWNIKOW;
ELSE
DBMS_OUTPUT.PUT_LINE('ILOSC PRACOWNIKOW ' || V_A);
DBMS_OUTPUT.PUT_LINE('W ZESPOLE ' || V_LICZBA);
END IF;
EXCEPTION
WHEN ZA_MALO_PRACOWNIKOW THEN
DBMS_OUTPUT.PUT_LINE('W ZESPOLE '||V_A||' jest za malo pracownikow, bo jedynie
'||V_A);
END;
/