CREATE OR REPLACE
FUNCTION podatek (p_id_prac IN NUMBER) RETURN NUMBER IS
CURSOR c_pracownik IS SELECT *
FROM pracownicy WHERE id_prac =
p_id_prac;
v_pracownik pracownicy%ROWTYPE;
v_roczne_zarobki NUMBER;
v_podatek NUMBER;
BEGIN
OPEN
c_pracownik;
FETCH
c_pracownik INTO v_pracownik;
CLOSE
c_pracownik;
v_roczne_zarobki := 12 * v_pracownik.placa_pod +
NVL(v_pracownik.placa_dod, 0);
IF
(v_roczne_zarobki > 5000) THEN v_podatek := 0.40 * v_roczne_zarobki;
ELSIF
(v_roczne_zarobki > 3000) THEN v_podatek := 0.30 * v_roczne_zarobki;
ELSE
v_podatek := 0.19 * v_roczne_zarobki;
END
IF;
RETURN v_podatek;
END podatek;