Mam takie polecenie:
utwórz procedurę, której zadaniem będzie dokonanie jednakowej podwyżki dla wszystkich pracowników danego kierownika. Procedura
w argumencie otrzyma numer kierownika i kwotę, o jaką należy podnieść pensję podstawową jemu i wszystkim jego podwładnym z tabeli EMP (employee).
dopiero zaczynam naukę PL/SQL i nie za bardzo wiem jak to zrobić, jak updatować wiele rekordów naraz?
na razie wysmarowałem coś takiego:
create or replace procedure podwyzka_PENSJI(KIEROWNIK number, KWOTA number)
AS
b integer;
**--kursor zwracający wszystkich pracownikow do podwyzki, dziala dobrze, zwraca wiele wierszy**
cursor pracownicy_podwyzka is
select EMPNO, ENAME, JOB, MGR, SAL
from emp
where mgr=KIEROWNIK OR empno=KIEROWNIK;
dopodw pracownicy_podwyzka%rowtype **--zmienna 'wierszowa' do ktorej mozna wsadzic rekordy zwracane przez powyzszy kursor, potrzebna do dalszej czesci zadania**;
BEGIN
select COUNT(*) into b
from emp
where empno=KIEROWNIK;
if b>0 then
open pracownicy_podwyzka;
fetch pracownicy_podwyzka into dopodw; //--i tutaj chcialbym zeby do 'dopodw' wsadzic wszystkie rekordy zwrocone przez kursor i przeprowadzic na nich update, teraz natomiast wsadzam tylko pierwszy rekord i tylko ten rekord ponizej wypisuje i update'uje. W przykladowej procedurze, na podstawie ktorej sie uczylismy budowy procedur, mam tylko uzycie polecenia fetch i srednio moglem znaleźć inne przykłady, wiekszosc w necie jest dla PHP, ktorego sie jeszcze nie uczylem..//__foo__
dbms_output.put_line('Pracownik do podwyzki = '|| dopodw.EMPNO);
update EMP
set SAL=SAL+KWOTA
where EMPNO=dopodw.EMPNO;
else
dbms_output.put_line('Nie ma kierownika o takim numerze');
end if;
end;
trzeba użyć jakiejś pętli czy w jaki sposób można to zrobić?
pozdrawiam