专注于.Net

享受编程的乐趣
posts - 108, comments - 65, trackbacks - 3, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

SQL流水帐号的生成

Posted on 2008-03-10 17:15 古道飘零客 阅读(486) 评论(3) 编辑 收藏
 1 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。
 2 --得到新编号的函数
 3 CREATE FUNCTION f_NextBH()
 4 RETURNS char(8)
 5 AS
 6 BEGIN
 7     RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6FROM tb WITH(XLOCK,PAGLOCK))
 8 END
 9 GO
10 
11 --在表中应用函数
12 CREATE TABLE tb(
13 BH char(8PRIMARY KEY DEFAULT dbo.f_NextBH(),
14 col int)
15 
16 --插入资料
17 BEGIN TRAN
18     INSERT tb(col) VALUES(1)
19     INSERT tb(col) VALUES(2)
20     INSERT tb(col) VALUES(3)
21     DELETE tb WHERE col=3
22     INSERT tb(col) VALUES(4)
23     INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
24 COMMIT TRAN
25 
26 --显示结果
27 SELECT * FROM tb
28 /*--结果
29 BH         col 
30 ---------------- ----------- 
31 BH000001  1
32 BH000002  2
33 BH000003  4
34 BH000004  14
35 --*/