Cześć wszystkim,
Potrzebuje pomocy przy jednym zadaniu:
Napisz blok PL/SQL, w którym do tabeli Emps_in_Depts (Deptno NUMBER(2), Pracownicy VARCHAR2(4000)) są wprowadzone wiersze postaci (deptno,ename1$ename2$....enamek$), gdzie ename1,ename2,...,enamek są wszystkimi pracownikami zatrudnionymi w dziale o numerze deptno np. (10,CLARK$KING$MILLER$).
Stworzyłem takie zapytanie:
DECLARE
CURSOR kursor_dept IS
SELECT DISTINCT e.deptno FROM Emp e;
rek_dept kursor_dept%ROWTYPE;
CURSOR kursor_osoba IS
SELECT e.ename, e.deptno FROM Emp e;
rek_osoby kursor_osoba%ROWTYPE;
nazwa varchar2(200):='';
BEGIN
OPEN kursor_dept;
OPEN kursor_osoba;
LOOP
FETCH kursor_dept INTO rek_dept;
EXIT WHEN kursor_dept%NOTFOUND;
LOOP
FETCH kursor_osoba INTO rek_osoby;
EXIT WHEN kursor_osoba%NOTFOUND;
IF rek_dept.deptno = rek_osoby.deptno THEN
nazwa:= nazwa||'$'||rek_osoby.ename ;
END IF;
END LOOP;
INSERT INTO Emps_in_Depts values (rek_dept.deptno,nazwa);
nazwa:='';
END LOOP;
CLOSE kursor_osoba;
CLOSE kursor_dept;
COMMIT;
END;
/
Niestety zamiast dla każdego działu, wypisuje tylko dla pierwszego, czyli deptno = 30 i nie jestem wstanie zrozumieć o co chodzi. Tak jakby warunek IF nie był spełnony mimo, że potem przy kolejnym obrocie jest deptno 20 i 10.
Wiem, że to pewnie coś banalnego ale nie ogarniam czemu to nie łapie.
Z góry dzięki za wszelką pomoc.