CW.8
--select * from PRAC_2;
/*CREATE OR REPLACE PROCEDURE podnies_place (ile REAL) IS
BEGIN
UPDATE PRAC_2
SET placa_pod = placa_pod + ile;
END;
BEGIN
podnies_place(50);
END;
/
*/
Definiowanie funkcji niezależnej:
/*CREATE or REPLACE FUNCTION polowa(v_ile IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURN (v_ile * 0.5);
END polowa;
*/
select nazwisko, etat, placa_pod, polowa(placa_pod) from PRAC_2;
VARIABLE x NUMBER;
EXECUTE :x :=polowa(100);
PRINT x;
Zadanie do samodzielnego wykonania:
Zad. 2. Zdefiniować funkcję podatek o parametrze umożliwiającym wprowadzenie numeru pracownika (wartości id_prac z tabeli prac), która oblicza podatek należny fiskusowi w wysokościach:
40% * rocz_zar gdy rocz_zar>50000
30% * rocz_zar gdy 50000>=rocz_zar>30000
19%* rocz_zar w pozostał przypadkach
gdzie rocz_zar = 12*placa_pod + placa_dod.
Uwaga: przy obliczaniu rocznych zarobków użyć funkcji nvl dla placa_dod;
create or replace
FUNCTION podatek(id_pracownika IN NUMBER)
RETURN NUMBER
IS
rocz_zar NUMBER;
BEGIN
select placa_pod + nvl(placa_pod,0) INTO rocz_zar from PRAC_2 where id_prac = id_pracownika;
rocz_zar:= rocz_zar*12;
IF rocz_zar>50000 THEN
rocz_zar:= rocz_zar*0.4;
RETURN (rocz_zar);
END IF;
IF rocz_zar>30000 THEN
rocz_zar:= rocz_zar*0.3;
RETURN (rocz_zar);
END IF;
rocz_zar:= rocz_zar*0.19;
RETURN (rocz_zar);
END podatek;