oracle过程求助,向一个表批量插入数据 5
oracle过程求助,向一个表批量插入数据表结构tablea(id1varchar2(16);id2varchar2(16);id3interger;valuevarch...
oracle过程求助,向一个表批量插入数据 表结构 table a (id1 varchar2(16) ;id2 varchar2(16);id3 interger ;value varchar(20) )
现在情况是表里面已经有数据 id1=00001 ,想通过过程实现 插入数据 01500<id1<04000 , id2 id3 value 的值都和id1的值相同 展开
现在情况是表里面已经有数据 id1=00001 ,想通过过程实现 插入数据 01500<id1<04000 , id2 id3 value 的值都和id1的值相同 展开
3个回答
展开全部
供参考:
declare
vi number;
vc varchar2(20);
begin
vi := 1501;
loop
exit when vi >= 4000;
insert into a(id1,id2,id3,value)
select lpad(to_char(vi),5,'0'),id2,id3,value from a where id1 = '00001';
vi:= vi+1;
end loop;
commit;
end;
追问
不好意思 好久没上线,如果 id1=00001 有多条记录呢 能实现么,就如ID是一个班级号 ,然后ID2 ID3 value 是班级的各种成绩描述 ,这个要怎么实现呢
追答
给一个数据的例子吧。
展开全部
DECLARE
A_RECORD A%ROWTYPE ;
I INTEGER := 1501 ;
BEGIN
SELECT * INTO A_RECORD FROM A WHERE ID1 = '00001';
LOOP
EXIT WHEN I >= 4000 ;
INSERT INTO A VALUES ('0'||I,A_RECORD.ID2,A_RECORD.ID3,A_RECORD.VALUE);
I := I+1;
END LOOP;
COMMIT;
END;
A_RECORD A%ROWTYPE ;
I INTEGER := 1501 ;
BEGIN
SELECT * INTO A_RECORD FROM A WHERE ID1 = '00001';
LOOP
EXIT WHEN I >= 4000 ;
INSERT INTO A VALUES ('0'||I,A_RECORD.ID2,A_RECORD.ID3,A_RECORD.VALUE);
I := I+1;
END LOOP;
COMMIT;
END;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询