【SQL Server】存储过程动态调用sequence

xixuefeng Other 2017-11-10 14:33:44 998 次浏览 【SQL Server】存储过程动态调用sequence已关闭评论

需求:不同的分组返回自己指定的流水号,跨年后,从1开始。流水号中前几位是该分组的组编码。

实现这个需求,方法有很多,应用把这个活儿交给了数据库,因为数据库处理起来更方便些,应用使用起来也就不用管太多问题了。

在数据库层面实现,显然sequence是比较好的方法。这个需求最早是在Oracle数据库上做的,实现起来非常容易,创建一个function,这个function调用一个procedure,procedure中通过动态SQL得到组的编码,再查询sequence,sequence的命名规则是:seq_+当前年份+组编码。如果存在,则直接返回sequence的值,如果不存在,则抛出异常,在异常处理部分创建该sequence。

oracle实现起来很容易,在sqlserver中,对于对sqlserver不了解的人来说,还是有些小麻烦。在此把过程中涉及到的代码粘贴在此。

 

 

 

回顶部