A表中有800万数据。
具体的逻辑是这样的,就是A表中有一个字段type,这个type中有多个值,其中是以,号隔开的。比如:010,030,020.
现在的情况是我要把A表中的type字段中的值拿出来然后以,号隔开,变成010 030 020 三个值,然后作为三条记录放到表B的字段type 中。在B表中记录会是这样
id type
1 010
2 030
3 020
三条记录。
存储过程是这样
程序代码:
type cur is ref cursor
v_resultset cur;
v_resultset1 cur;
v_type varchar2(10);
v_type2 varchar2(30);
open v_resultset for select type from A;
loop
fetch v_resultset into v_type;
open resultset1 for select * from table( split(v_type,','));--split是自己写的函数,分隔字符串后得到的是一个集合,还得循环。。。
loop
fetch resultset1 into v_type2;
insert into B values(v_type2);
close resutlset1;
end loop;
close resultset2;
end loop;
commit;
exception
处理
v_resultset cur;
v_resultset1 cur;
v_type varchar2(10);
v_type2 varchar2(30);
open v_resultset for select type from A;
loop
fetch v_resultset into v_type;
open resultset1 for select * from table( split(v_type,','));--split是自己写的函数,分隔字符串后得到的是一个集合,还得循环。。。
loop
fetch resultset1 into v_type2;
insert into B values(v_type2);
close resutlset1;
end loop;
close resultset2;
end loop;
commit;
exception
处理
就是这样,速度异常的慢。不过小北刚接触oracle存储过程,不知道有没有其它的好的实现方式。先谢谢大家了。像上面这个是循环套循环,速度一定会慢的。但是自己实在是想不到有没有更好的解决办法了。希望有经验的大大们不吝赐教!先谢谢了