oracle 根据表的最大值更新序列的起始值
create or replace procedure PROC_USEQ (
v_table in varchar2
)is v_number number;
str varchar2(500);
str1 varchar2(500);
str2 varchar2(500);
str3 varchar2(500);
begin
str1 := 'select max(id) from '|| v_table;
EXECUTE IMMEDIATE str1 into v_number;
commit;
str := 'alter sequence '|| v_table ||'_ID increment by ' || v_number;
EXECUTE IMMEDIATE str ;
commit;
str2:='select '|| v_table ||'_ID.nextval from dual';
EXECUTE IMMEDIATE str2 into v_number;
commit;
str3 := 'alter sequence '|| v_table ||'_ID increment by 1' ;
EXECUTE IMMEDIATE str3 ;
commit;
end;
oracle 18c支持序列直接绑定id的默认值不需要触发器+序列;
我的oracle 版本是oracle 18c,刚从sqlserver 转oracle 发现变量真的是不习惯;