我有一个EMP表,其中包含员工的姓名和他工作的部门。类似于说(显然它比我的例子大得多):
dept name
10 Clark
10 King
20 Jacob
30 Michael
10 Miller
30 John
40 Leonardo
然后是第二张table:
Emps_in_Depts (Deptno NUMBER(2), Employees VARCHAR2(4000))
我的任务是编写PL/SQL代码,以这种方式将数据插入第二个表:
(10,CLARK$KING$MILLER$)
(30,Michael$John)
每个部门都是如此。
我有基本的想法使用游标内游标,但我不知道如何合并值从多行到一个单一的。
DECLARE
CURSOR kursor
IS
SELECT DISTINCT deptno
FROM emp;
departament
emp.deptno%TYPE;
BEGIN
OPEN kursor;
LOOP
FETCH kursor INTO departament;
EXIT WHEN kursor%NOTFOUND;
--HERE SHOULD BE SECOND CURSOR
--which I'm not sure how to code so that it fetches from
--SELECT ename FROM emp WHERE deptno = departament
--
--and it should insert values into Emps_in_depts here I guess.
END LOOP;
CLOSE kursor;
END;
2条答案
按热度按时间mdfafbf11#
检查函数LISTAGG(从Oracle 11.2开始可用),您几乎可以从文档中复制它。
uurv41yg2#
你可以做的基本上是: