1. 程式人生 > >Oracle資料庫批量插入使用Sequence.nextval報錯ORA:02287問題解決

Oracle資料庫批量插入使用Sequence.nextval報錯ORA:02287問題解決

今天出現一個很奇葩的問題,之前做oracle的批量插入,對於主鍵都是直接在Java中賦值,後來發現不方便,後來改用Sequence.nextval,結果報錯

使用前:

insert into exceltable  (id,chinese,english)
  select 1,'111','111' from dual union all
  select 2,'222','222' from dual

沒有報錯!!!

使用序列後:

insert into exceltable  (id,chinese,english)
  select excel_seq.nextval,'111','111' from dual union all
  select excel_seq.nextval,'222','222' from dual

報錯---ORA:02287

先建立函式:

create or replace function get_seq (p_in_sqname in varchar2) return number
is
  l_res number ;
begin
  execute immediate 'select '|| p_in_sqname|| '.nextval from dual' into l_res ;
  return l_res ;
end ;


然後再如下呼叫:

insert into exceltable  (id,chinese,english) 
  select get_seq('excel_seq'),'111','111' from dual union all 
  select get_seq('excel_seq'),'222','222' from dual

完美解決!