如题,在使用merge的同时希望使用sequence做到某个字段的自增,相信大家也在项目中遇到过同样的问题:也就是无论sql是否执行,sequence总是会自我执行一次。
解决方案:使用Funciton函数讲sequence包裹住,只有执行函数时才会触发sequence的增长。
创建函数Function:
create or replace function 方法名(自定义sequence名 in varchar2) return varchar2 is
返回名 number;
begin
execute immediate 'select ' || 自定义sequence名 || '.nextval from dual' into 返回名;
return(返回名);
exception
when others then
raise_application_error(sqlcode,sqlerrm);
end 方法名;