如何在 Oracle 中使用 for 循环进行插入?

Gun*_*gur 2 sql oracle plsql loops insert

我在使用以下 for 循环在 Oracle 中插入 100 万条记录时遇到问题。insert 语句独立工作,但不在循环内。我在这里做错了什么?

BEGIN
    FOR v_LoopCounter IN 385000000..1000000 LOOP
        INSERT INTO PORT (snb, real_exch, act_exch, user_type, status_id, category_id, assignable) 
            VALUES (TO_CHAR(v_LoopCounter),'GSMB','GSMB','GSM',0,90,'0');
        COMMIT;
    END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

Lit*_*oot 6

不要那样做,尤其不要COMMIT在循环中。

使用行生成器;有很多技术,其中之一是这样的:

SQL> create table test (snb number, real_exch varchar2(20));

Table created.

SQL> insert into test (snb, real_exch)
  2    select 385000000 + level - 1, 'GSMB'
  3    from dual
  4    connect by level <= 10;        --> you'd put a million here

10 rows created.

SQL> select * from test;

       SNB REAL_EXCH
---------- --------------------
 385000000 GSMB
 385000001 GSMB
 385000002 GSMB
 385000003 GSMB
 385000004 GSMB
 385000005 GSMB
 385000006 GSMB
 385000007 GSMB
 385000008 GSMB
 385000009 GSMB

10 rows selected.

SQL>
Run Code Online (Sandbox Code Playgroud)