Cześć,
mam otóż taki problem - gdyż nie wiem jak w bazie Oracle zaktualizować wiersze w tabeli i wykorzystać do tego klauzule RETURNING INTO.
Otóż mam tą klauzulę zastosować (dla WHERE CURRENT OF działa mi poprawnie, lecz nie wiem jak zrobić to dla RETURNING INTO).
Tabela ma nazwę OCENA i w niej jest pole ocena.
Podaje mój kod:
SET SERVEROUTPUT ON
DECLARE
CURSOR zmi IS
SELECT s.nazwisko, o.ocena
FROM student s, ocena o, zajecia z, przedmiot p, wykladowca w
WHERE s.ID_STUDENT = o.ID_STUDENT AND z.ID_ZAJECIA = o.ID_ZAJECIA AND z.ID_PRZEDMIOT = p.ID_PRZEDMIOT AND z.ID_WYKLADOWCA = w.ID_WYKLADOWCA
AND p.nazwa = 'ALGEBRA' AND w.nazwisko = 'MALISZEWSKI' FOR UPDATE;
nocena ocena.ocena%TYPE;
BEGIN
FOR li IN zmi LOOP
dbms_output.put_line('Przed: ' || li.nazwisko || ' ' || li.ocena);
IF(li.ocena = 4.0) THEN
nocena := 5.0;
ELSIF(li.ocena <> 2.0) THEN
nocena := li.ocena - 0.5;
END IF;
UPDATE ocena SET ocena = nocena** RETURNING ocena INTO ?????**;
dbms_output.put_line(li.nazwisko || ' ' || **ta_nowa_ocena**);
END LOOP;
END;