日期:2014-05-16  浏览次数:20916 次

关于数据库循环插入数据的问题
有一张表A,里面有字段sno,gno,sname,gname,往表里插入几行数据,要求sno,gno里面的数是递增的

请大虾帮忙写一下sql语句,好像能用到循环,我就是不知道怎么实现
------解决方案--------------------
如果你的sname和gname没有什么要求的话的,可以用循环:

begin
     for i in 1..20 loop
     insert into A(sno,gno,sname,gname) values(i,i,'jack'
------解决方案--------------------
i,'rose'
------解决方案--------------------
i); 
     end loop;
     commit;
end;

------解决方案--------------------
可以用sequence的nextval,就可以实现递增了

insert into A(sno,gno,sname,gname)values(seq_sno.nextval,seq_gno.nexrval,v_sname,v_gname);

------解决方案--------------------
insert into A(sno,gno,sname,gname)
select 's' 
------解决方案--------------------
 to_char(level), 'g'
------解决方案--------------------
 to_char(level), 'sname'
------解决方案--------------------
 to_char(level),'gname'
------解决方案--------------------
to_char(level)
from dual
connect by level 10
------解决方案--------------------
insert into A(sno,gno,sname,gname)
select 's' 
------解决方案--------------------
 to_char(level), 'g'
------解决方案--------------------
 to_char(level), 'sname'
------解决方案--------------------
 to_char(level),'gname'
------解决方案--------------------
to_char(level)
from dual
connect by level<10 
------解决方案--------------------
建立楼主考虑下序列号,每次取序列号的下一个值,肯定是会依次增加的
------解决方案--------------------
引用:
可以用sequence的nextval,就可以实现递增了

insert into A(sno,gno,sname,gname)values(seq_sno.nextval,seq_gno.nexrval,v_sname,v_gname);
 应该还要说明一下声明一个序列,没声明是用不了的。
------解决方案--------------------
引用:
可以用sequence的nextval,就可以实现递增了

insert into A(sno,gno,sname,gname)values(seq_sno.nextval,seq_gno.nexrval,v_sname,v_gname);


create sequence sequence_name
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 10;
------解决方案--------------------
上面说的都对。测试的话用connect by批量插入比较方便。正式使用要用序列