问题描述
嗨,
我想插入500002行到我的表通过应用限制10k,现在多少次我的限制是迭代。是5倍还是6倍。
plz可以给出一个示例示例吗?
我想插入500002行到我的表通过应用限制10k,现在多少次我的限制是迭代。是5倍还是6倍。
plz可以给出一个示例示例吗?
专家解答
它将是:
ceil( 500002/10k)
既不是5也不是6 :-)
但假设你的意思是50002,这里有一个演示
ceil( 500002/10k)
既不是5也不是6 :-)
SQL> select ceil( 500002 / 10000 ) from dual;
CEIL(500002/10000)
------------------
51
但假设你的意思是50002,这里有一个演示
SQL> create table t_source ( x int);
Table created.
SQL> create table t_target ( x int );
Table created.
SQL>
SQL> insert into t_source
2 select rownum from dual
3 connect by level <= 50002;
50002 rows created.
SQL>
SQL> set serverout on
SQL> declare
2 type array is table of int index by pls_integer;
3 a array;
4 cursor c is select * from t_source;
5 iteration_count int := 0;
6 begin
7 open c;
8 loop
9 fetch c bulk collect into a limit 10000;
10 exit when a.count = 0;
11 iteration_count := iteration_count + 1;
12 dbms_output.put_line('This is iteration '||iteration_count);
13
14 forall i in 1 .. a.count
15 insert into t_target values (a(i));
16
17 end loop;
18 close c;
19 end;
20 /
This is iteration 1
This is iteration 2
This is iteration 3
This is iteration 4
This is iteration 5
This is iteration 6
PL/SQL procedure successfully completed.
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




