蝶恋花

  博客园  ::  :: 新随笔  :: 联系 ::  :: 管理

SQL Server通用流水号生成存储过程

 

 

 

代码
1 DROP PROCEDURE PRO_AutoLSH
2  GO
3  CREATE PROCEDURE PRO_AutoLSH
4 (
5  @letter varchar(10), --首字母,可以多个字母
6 @LSHkey varchar(20), --表中的流水号列名,最好是主键
7 @tablename varchar(20) --表名
8 )
9 AS
10 begin
11 DECLARE @LSHID NVARCHAR(20)
12 DECLARE @TLSH VARCHAR(20)
13 DECLARE @NUM INT
14 DECLARE @sql NVARCHAR(200)
15 ----查询该表最大的流水号
16 SET @sql='SELECT ISNULL(MAX(CONVERT(INT,SUBSTRING('+@LSHkey+',8,4))),0)+1 FROM '+@tablename
17 --创建临时表
18 CREATE TABLE TEMP1(TOTAL INT);
19 --写入查询得到的数据
20 INSERT INTO TEMP1 EXEC(@sql);
21 --再查询出值
22 SET @NUM=(SELECT TOTAL FROM TEMP1)
23 DROP TABLE TEMP1
24 --拼接下一个流水号:J+年份4位+月份2位+4位编号(如J2010120001)
25 SET @TLSH=@letter+SUBSTRING(CONVERT(VARCHAR(100),GETDATE(),112),1,6)+SUBSTRING(CONVERT(CHAR(5),10000+@NUM),2,4)
26 SET @sql=''
27 SET @sql='SELECT @LSH='+''''+@TLSH+''''+' FROM '+@tablename
28
29 EXEC sp_executesql @sql,N'@LSH NVARCHAR(20) OUTPUT',@LSHID OUTPUT SELECT @LSHID
30 end

 

 

 

posted on 2010-12-24 16:12  _蝶恋花  阅读(1681)  评论(0编辑  收藏  举报