天天看點

Oracle資料庫-批量插入+序列的兩種方式

定義序列名稱為 oracle_table_seq

方式1

insert into oracle_table  (id,code)

    select id,code from ( 

       select oracle_table_seq.nextval as id, '1' as code  from dual 

       union all   

       select oracle_table_seq.nextval as id, '1' as code  from dual     

       union all   

       select oracle_table_seq.nextval as id, '1' as code  from dual        

       union all   

       select oracle_table_seq.nextval as id, '1' as code  from dual         

    ) ;

 直接把序列名稱.nextval替換對應值即可

方式2

begin

  insert into oracle_table ( id, code ) values( oracle_table_seq.nextval  , '1' );  

  insert into oracle_table ( id, code ) values( oracle_table_seq.nextval  , '2' );  

  insert into oracle_table ( id, code ) values( oracle_table_seq.nextval  , '3' );   

  insert into oracle_table ( id, code ) values( oracle_table_seq.nextval  , '4' );

end;

同樣, 序列名稱.nextval替換對應值即可

額外說明

以上是兩種使用序列進行批量插入的方式。先前文章提到過批量插入的三種方法,還有以下寫法

 insert all 

 into oracle_table ( id, code ) values( 1 , '1' )  

 into oracle_table ( id, code ) values( 2 , '2' )   

 into oracle_table ( id, code ) values( 3 , '3' )   

 into oracle_table ( id, code ) values( 4 , '4' )   

 select 1 from dual ;

 但是實際使用,會發現此種方法的序列值始終保持不變,是以不能使用。