日期:2014-05-17  浏览次数:21386 次

insert怎么写循环?
用的是PL/SQL Developer

就是有一张table表,假设有6个字段好了 a b c d e f  

我要往里面插10W条数据

a b是主key,a是5位的,就是说最多也就是从0-99999,b是8位的日期项目,然后c是某个固定的值,这10W条数据的c必须是同一个值

要是插一条的话就是 insert into table values ('88','20120715','123','d','e','f') 
差不多就是这个样子

我现在要把a从0-99999都插满,因为循环日期b的话,貌似更复杂吧

要怎么写呢?

------解决方案--------------------
直接写储存过程呗
------解决方案--------------------
SQL code

--例子,10改为100000,其他改为你想要的就可以了
create table t(
a varchar2(20),
b varchar2(20),
c varchar2(20),
d varchar2(20),
e varchar2(20),
f varchar2(20)
);

declare 
row int := 0;
begin
    while row<10
    loop
        insert into t values(row,'20120715','123','d','e','f');  
        row := row+1;
    end loop;
end;
/

------解决方案--------------------
写个循环就行了,a和b都可以循环插入值。
------解决方案--------------------
存储过程 用while、for循环都可以满足
------解决方案--------------------
探讨
2楼有实例 但是我想说那表是本来存在的啊 不是我能随便新建一个表的

------解决方案--------------------
探讨

SQL code

--例子,10改为100000,其他改为你想要的就可以了
create table t(
a varchar2(20),
b varchar2(20),
c varchar2(20),
d varchar2(20),
e varchar2(20),
f varchar2(20)
);

declare
row int := 0;
begin
while row<1……

------解决方案--------------------

declare
maxrecords constant int:=100000;
i int :=1;
V_COUNT NUMBER := 0;
begin
for i in 1..maxrecords loop
INSERT INTO tt
(ID,
age
)
VALUES
(
INVOICE_ID.NEXTVAL,
TRUNC(DBMS_RANDOM.VALUE(1, 100))
);
V_COUNT := V_COUNT + 1;
IF V_COUNT = 500 THEN
COMMIT;
V_COUNT := 0;
END IF;
end loop;
dbms_output.put_line(' 成功录入数据! ');
commit;
end; 
换下字段!主key取sequence!