oracle 批量insert into


 

看了ITPUB博主的文章也才知道oracle也這種操作,記錄一下。。

 

1.for 循環批量insert

create table T_TABLE_SQL
(
  ids      NUMBER,
  col_name VARCHAR2(20)
);
insert into t_table_sql values(001,'trans'); insert into t_table_sql values(002,'json'); create table t_table_sql_2 as select * from t_table_sql where 1=2; select * from t_table_sql; begin for i in (select * from t_table_sql) loop --一直都以為oracle不支持把"行"變量直接和insert操作關聯起來使用,這里"行"變量這個名字是我給起的,不知道是否准確,只要大家能理解就ok. insert into t_table_sql_2 values i; --才曉得,oracle還有這種操作 commit; end loop; end; select * from t_table_sql_2; SQL> select * from t_table_sql_2; IDS COL_NAME ---------- -------------------- 1 trans 2 json

 

 

2.游標批量insert

   2.1

truncate table t_table_sql_2;

select * from t_table_sql_2;

declare
cursor cur_data is
select * from t_table_sql;
v_tab t_table_sql%rowtype;
begin
 open cur_data;
  fetch cur_data into v_tab;
  while cur_data%found loop
    insert into t_table_sql_2 values v_tab;
    fetch cur_data into v_tab; 
    end loop;
 close cur_data;
 commit;
  end;

 

   2.2

truncate table t_table_sql_2;

select * from t_table_sql_2;

declare
cursor cur_data is select * from t_table_sql;
type t_tab_rec is record(
ids t_table_sql.ids%type,
col_name t_table_sql.col_name%type);
t_tab t_tab_rec;
begin
  open cur_data;
  fetch cur_data into t_tab;
  while cur_data%found loop
    insert into t_table_sql_2 values t_tab;
    fetch cur_data into t_tab;
    end loop;
  close cur_data;
  commit;
  end;

 

 

 

 

 

 

轉:http://blog.itpub.net/19602/viewspace-1015318/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM