background image

Kierunek: Informatyka III 
Przedmiot: Bazy danych 

Opole 2013 

 

 

POLITECHNIKA OPOLSKA 

Ćwiczenie 7 

 

 

 

 

 

 

 

 

 

 

 

Wykonał: 

Adam Czech 

background image

Kierunek: Informatyka III 
Przedmiot: Bazy danych 
 

 

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. 

 

 

 

 

 

 

 

 

 

 

background image

Kierunek: Informatyka III 
Przedmiot: Bazy danych 
 

 

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&#230; wi&#234;ksza ni&#191; 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; 

 

 

 

 

background image

Kierunek: Informatyka III 
Przedmiot: Bazy danych 
 

 

 

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;