Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --ZADANIE 1--
- DECLARE
- CURSOR cursor_zad1_pracownik IS
- SELECT p.nazwisko, p.pobory, p.premia
- FROM pracownicy_07 p ORDER BY p.nazwisko;
- stosunek NUMBER;
- BEGIN
- FOR pracownik IN cursor_zad1_pracownik LOOP
- stosunek := pracownik.pobory / pracownik.premia;
- DBMS_OUTPUT.PUT_LINE(pracownik.nazwisko||' | '||stosunek);
- END LOOP;
- EXCEPTION
- WHEN ZERO_DIVIDE THEN
- DBMS_OUTPUT.PUT_LINE('Dzielenie przez 0!');
- END;
- --ZADANIE 2--
- DECLARE
- CURSOR cursor_zad1_pracownik IS
- SELECT p.nazwisko, p.pobory, p.premia
- FROM pracownicy_07 p ORDER BY p.nazwisko;
- stosunek NUMBER;
- BEGIN
- FOR pracownik IN cursor_zad1_pracownik LOOP
- BEGIN
- stosunek := pracownik.pobory / pracownik.premia;
- DBMS_OUTPUT.PUT_LINE(pracownik.nazwisko||' | '||stosunek);
- EXCEPTION
- WHEN ZERO_DIVIDE THEN
- DBMS_OUTPUT.PUT_LINE('Dzielenie przez 0!');
- END;
- END LOOP;
- END;
- --ZADANIE 3--
- CREATE OR REPLACE PROCEDURE zadanie3(par_id VARCHAR2) AS
- pracownik pracownicy_07%ROWTYPE;
- BEGIN
- SELECT * INTO pracownik FROM pracownicy_07 p WHERE p.pracownik_id = par_id;
- DBMS_OUTPUT.PUT_LINE(pracownik.imie||' | '||pracownik.nazwisko||' | '||pracownik.pobory||' | '||pracownik.dzial_id);
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- DBMS_OUTPUT.PUT_LINE('Nie znaleziono!');
- WHEN INVALID_NUMBER THEN
- DBMS_OUTPUT.PUT_LINE('Zly parametr!');
- WHEN VALUE_ERROR THEN
- DBMS_OUTPUT.PUT_LINE('Bledna wartosc!');
- WHEN OTHERS THEN
- DBMS_OUTPUT.PUT_LINE('Jakis inny blad!');
- END;
- BEGIN
- zadanie3(120);
- END;
- --ZADANIE 4--
- CREATE OR REPLACE PROCEDURE zadanie4(par_id VARCHAR2) AS
- pracownik pracownicy_07%ROWTYPE;
- BRAK_PREMII EXCEPTION;
- PRAGMA exception_init (BRAK_PREMII, -20000);
- BEGIN
- SELECT * INTO pracownik FROM pracownicy_07 p WHERE p.pracownik_id = par_id;
- IF pracownik.premia = 0 THEN
- raise_application_error(-20000, 'Brak premii!');
- END IF;
- DBMS_OUTPUT.PUT_LINE(pracownik.imie||' | '||pracownik.nazwisko||' | '||pracownik.pobory||' | '||pracownik.dzial_id);
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- DBMS_OUTPUT.PUT_LINE('Nie znaleziono!');
- WHEN INVALID_NUMBER THEN
- DBMS_OUTPUT.PUT_LINE('Zly parametr!');
- WHEN VALUE_ERROR THEN
- DBMS_OUTPUT.PUT_LINE('Bledna wartosc!');
- WHEN BRAK_PREMII THEN
- DBMS_OUTPUT.PUT_LINE('Brak premii!');
- WHEN OTHERS THEN
- DBMS_OUTPUT.PUT_LINE('Jakis inny blad!');
- END;
- BEGIN
- zadanie4(120);
- END;
- --ZADANIE 5--
- CREATE OR REPLACE PROCEDURE zadanie5(par_id_dzial VARCHAR2) AS
- CURSOR cursor_zadanie5 IS SELECT dzial_id, COUNT(*) AS LICZBA_OSOB FROM pracownicy_07 WHERE dzial_id < par_id_dzial GROUP BY dzial_id ORDER BY dzial_id;
- NO_DATA_FOUND EXCEPTION;
- BEGIN
- FOR pracownik IN cursor_zadanie5 LOOP
- BEGIN
- IF pracownik.LICZBA_OSOB < 2 THEN
- RAISE NO_DATA_FOUND;
- END IF;
- DBMS_OUTPUT.PUT_LINE('Dzial: '||pracownik.dzial_id||' | ilosc osob: '||pracownik.LICZBA_OSOB);
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- DBMS_OUTPUT.PUT_LINE('Dzial: '||pracownik.dzial_id||' | liczba osob mniejsza od 2');
- END;
- END LOOP;
- END;
- BEGIN
- zadanie5(100);
- END;
- --ZADANIE 6--
- CREATE OR REPLACE PROCEDURE zadanie6(par_id_dzial VARCHAR2) AS
- CURSOR cursor_zadanie5 IS SELECT dzial_id, COUNT(*) AS LICZBA_OSOB FROM pracownicy_07 WHERE dzial_id < par_id_dzial GROUP BY dzial_id ORDER BY dzial_id;
- NO_DATA_FOUND EXCEPTION;
- BEGIN
- IF par_id_dzial < 10 OR par_id_dzial > 270 THEN
- RAISE INVALID_NUMBER;
- END IF;
- FOR pracownik IN cursor_zadanie5 LOOP
- BEGIN
- IF pracownik.LICZBA_OSOB < 2 THEN
- RAISE NO_DATA_FOUND;
- END IF;
- DBMS_OUTPUT.PUT_LINE('Dzial: '||pracownik.dzial_id||' | ilosc osob: '||pracownik.LICZBA_OSOB);
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- DBMS_OUTPUT.PUT_LINE('Dzial: '||pracownik.dzial_id||' | liczba osob mniejsza od 2');
- END;
- END LOOP;
- EXCEPTION
- WHEN INVALID_NUMBER THEN
- DBMS_OUTPUT.PUT_LINE('Zly parametr!');
- END;
- BEGIN
- zadanie6(270);
- END;
- --ZADANIE 7--
- CREATE OR REPLACE PROCEDURE zadanie7(par_id_dzial VARCHAR2) AS
- NO_DATA_FOUND EXCEPTION;
- zm_dzial_id NUMBER;
- zm_suma_zarobkow NUMBER;
- BEGIN
- IF par_id_dzial < 10 OR par_id_dzial > 270 THEN
- RAISE INVALID_NUMBER;
- END IF;
- SELECT dzial_id, SUM(pobory) AS SUMA_ZAROBKOW INTO zm_dzial_id, zm_suma_zarobkow FROM pracownicy_07 WHERE dzial_id = par_id_dzial GROUP BY dzial_id;
- DBMS_OUTPUT.PUT_LINE('Dzial: '||par_id_dzial||' | suma zarobkow: '||zm_suma_zarobkow);
- EXCEPTION
- WHEN INVALID_NUMBER THEN
- DBMS_OUTPUT.PUT_LINE('Zly parametr!');
- WHEN OTHERS THEN
- DBMS_OUTPUT.PUT_LINE('Dzial: '||par_id_dzial||' | suma zarobkow: 0');
- END;
- BEGIN
- zadanie7(110);
- END;
- --ZADANIE 8--
- CREATE OR REPLACE PROCEDURE zadanie8 AS
- CURSOR cursor_zadanie8 IS
- SELECT DYR.szef_id, PRAC.pobory_pod, SUM(DYR.pobory_pod) AS prac_pob
- FROM zaloga PRAC
- JOIN zaloga DYR ON DYR.szef_id = PRAC.prac_id
- JOIN etaty ON PRAC.etat = etaty.nazwa
- WHERE etaty.nazwa = 'DYREKTOR'
- GROUP BY DYR.szef_id, PRAC.pobory_pod ORDER BY DYR.szef_id;
- procent_z_poborow NUMBER(6,2);
- ZA_DUZA_PENSJA EXCEPTION;
- PRAGMA exception_init (ZA_DUZA_PENSJA, -20000);
- BEGIN
- FOR x IN cursor_zadanie8 LOOP
- procent_z_poborow := x.pobory_pod + (x.prac_pob * 0.01);
- IF procent_z_poborow > 4000 THEN
- RAISE_APPLICATION_ERROR(-20000, 'Pensja dyrektora wieksza niz 4000!');
- END IF;
- DBMS_OUTPUT.PUT_LINE('Szef ID: '||x.szef_id||' | zarobki przed podwyzka: '||x.pobory_pod||' | zarobki po podwyzce: '||procent_z_poborow);
- END LOOP;
- EXCEPTION
- WHEN ZA_DUZA_PENSJA THEN
- DBMS_OUTPUT.PUT_LINE('Pensja dyrektora wieksza niz 4000!');
- END;
- BEGIN
- zadanie8;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement