Witam, jak w temacie mam problem z kompilacją triggera:
W tabeli pracownicy mam pola plus number, min number, pesel varchar2, dysp number
i chcę aby w polu dysp był stosunek plus/min, pomyślałem o triggerach i wyrzeźbiłem coś takiego:
create or replace trigger "PRACOWNICY_T1"
AFTER
insert or update or delete on "PRACOWNICY"
DECLARE -- declare and assign values
counted_dysp NUMBER;
var_p pracownicy.plus%TYPE;
var_m pracownicy.min%TYPE;
var_pes pracownicy.pesel%TYPE;
CURSOR kursor IS SELECT plus,min,pesel,dysp FROM pracownicy FOR UPDATE OF dysp;
BEGIN
OPEN kursor;
LOOP
FETCH kursor INTO var_p,var_m,var_pes,counted_dysp;
EXIT WHEN kursor%NOTFOUND;
IF var_m<=0 THEN counted_dysp:=var_p; -- błąd 1 (mniej wiecej w tym miejscu)
ELSE counted_dysp:=var_p/var_m;
UPDATE pracownicy SET dysp = counted_dysp WHERE pesel=var_pes; --błąd 2 j.w.
END LOOP;
CLOSE kursor;
END;
no i mam takie błędy:
#1: PLS-00103: Encountered the symbol "LOOP" when expecting one of the following: if
#2: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static member constructor map
Problem w tym, że w pl/sql nie jestem (jeszcze) biegły i nie widzę błędu (naprawdę starałem się go znależć) a podpowiedzi kompilatora niewiele mi mówią.
Jeżeli ktoś widzi błąd byłbym wdzięczny za podpowiedź. Albo może ktoś zna inne rozwiązanie zagadnienia, które podałem na początku - chętnie je poznam.
Pozdrawiam serdecznie