写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的。我现在没分了,以后有的话一定奉上,谢谢各位大神。
展开
 我来答
kaixingui2012
推荐于2017-09-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6377万
展开全部
先试试这个,好久不写了,一会儿找个环境帮你试试,补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 ;
追问
先谢谢了。但是我执行时报错了  ‘符号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 ;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式