Oracle資料庫批量插入使用Sequence.nextval報錯ORA:02287問題解決
阿新 • • 發佈:2019-01-05
今天出現一個很奇葩的問題,之前做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
完美解決!