写PLSQL语句(或存储过程)循环insert实现数据的复制
有一张表A,有三个字段:id,name,note。前两个字段为主键。要把现有记录的每条都复制出n条,规则是id和name都加上001开始的后缀,note不变。写PLSQL...
有一张表A,有三个字段:id,name,note。
前两个字段为主键。
要把现有记录的每条都复制出n条,规则是
id和name都加上001开始的后缀,note不变。
写PLSQL语句(或存储过程)循环insert实现
例如现有数据为
1,lan,good
2,liu,good
要复制2次,结果变为
1,lan,good
1001,lan001,good
1002,lan002,good
2,liu,good
2001,liu001,good
2002,liu002,good
是ORACLE的。我现在没分了,以后有的话一定奉上,谢谢各位大神。 展开
前两个字段为主键。
要把现有记录的每条都复制出n条,规则是
id和name都加上001开始的后缀,note不变。
写PLSQL语句(或存储过程)循环insert实现
例如现有数据为
1,lan,good
2,liu,good
要复制2次,结果变为
1,lan,good
1001,lan001,good
1002,lan002,good
2,liu,good
2001,liu001,good
2002,liu002,good
是ORACLE的。我现在没分了,以后有的话一定奉上,谢谢各位大神。 展开
展开全部
先试试这个,好久不写了,一会儿找个环境帮你试试,补0的问题一会儿再解决
create table B as select * from A where 1=0;
declare
cursor ind is select * from A ;
begin
for cur in ind
loop
for num 1..2
loop
insert into B values ( cur.id||num, cur.name||num, note );
end loop;
end loop;
end ;
create table B as select * from A where 1=0;
declare
cursor ind is select * from A ;
begin
for cur in ind
loop
for num 1..2
loop
insert into B values ( cur.id||num, cur.name||num, note );
end loop;
end loop;
end ;
追问
先谢谢了。但是我执行时报错了 ‘符号in在被替换为1后继续’
追答
刚才少了个in,这次又加了补0,你再试试
create table B as select * from A where 1=0;
declare
cursor ind is select * from A ;
num char(3);
begin
for cur in ind
loop
for nm in 1..2
loop
num := lpad( nm,3,0 );
insert into B values ( cur.id||num, cur.name||num, note );
end loop;
end loop;
end ;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询