Rozwiązania, CW8, CW


CW.8

0x01 graphic

--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;



Wyszukiwarka