我想从不同的游标将数据加载到一个集合中。下面你可以看到一个相同的小例子。简单地说,我需要从不同的表中取列并将其加载到单个表中。最初我们使用的是直接插入语句,它工作得很好,但是最近它引起了一些问题。所以我们尝试引入一个集合来收集数据,然后从那里将数据加载到表中。
declare
vin date;
cursor c1 is select emp_id.. from emp;
cursor c2 is select dept_id , ... from dept;
type t3 is table of t%rowtype;
t1 t3 := t3();
begin
for i in (select emp_id,dept_id,vin from dual)
loop
t1.extend;
t1(t1.count).load_date := i.vin;
t1(t1.count).emp_id := i.emp_id;
t1(t1.count).dept_no := i.dept_id;
end loop;
forall j in 1..t1.last
insert into t values (t1(j).emp_id,t1(j).dept_id,t1(j).load_date);
end;
当我尝试运行这个程序时,我得到一个错误,声明PLS00308:该构造函数不允许作为赋值的源函数。
2条答案
按热度按时间fdx2calv1#
尝试如下:
...或使用两个游标(结果相同)
qgzx9mmu2#
不要使用PL/SQL、游标或集合。只使用
INSERT INTO ... SELECT ...
和JOIN
表: