利用sql函数生成不重复的订单号的代码

来源:asp之家 时间:2012-01-05 19:02:55 

代码如下:


ALTER function [dbo].[GetOrderNum](
@ebaystockflag varchar(20)//规则字母
)
returns varchar(100)
AS
BEGIN
declare @dt CHAR(8)
declare @flag varchar(20)
set @flag='B'+@ebaystockflag
set @dt=CONVERT(CHAR(8),GETDATE(),112)
declare @max varchar(100)
SELECT @max=MAX(OrderNumber)
FROM tb_EbayOrder WITH(XLOCK,PAGLOCK)
WHERE OrderNumber like @flag+'%'
set @max=isnull(@max, @flag+@dt+'000')--查不到结果给个默认值
declare @a varchar(100)
declare @num varchar(10)
declare @ordernum varchar(20)
set @a=Convert(varchar,right(@max,len(@max)-10))--截取数字部分
if(LEFT(@a,1)=0)--以0开头
begin
if(SUBSTRING(@a,2,1)=0)--有两个0
begin
set @num=Convert(varchar,SUBSTRING(@a,3,LEN(@a-2))+1)

end
else if(SUBSTRING(@a,3,1)=0 and SUBSTRING(@a,2,1)=0)--有三个0
begin
set @num=1

end
else begin --只有一个0的情况
set @num=Convert(int,SUBSTRING(@a,2,LEN(@a))+1)

end
end
else begin --数字大于100的情况
set @num=Convert(varchar,@a+1)
end

if(LEN(@num)=1)--截取后不满三位的补0
begin set @num='00'+@num end
if(LEN(@num)=2)
begin set @num='0'+@num end
set @ordernum=@flag+@dt+@num
return @ordernum
END


调用:在事务中先锁定要操作的表 

代码如下:


SELECT * FROM tb_EbayOrder WITH (TABLOCKX)
SELECT * FROM tb_EbayOrderList WITH (TABLOCKX)
SELECT * FROM tb_EbayOrderUserInfo WITH (TABLOCKX)


调用:select dbo.GetOrderNum(@ebaystockflag)

标签:不重复,订单号
0
投稿

猜你喜欢

  • asp如何在刷新链接之前验证文件是否存在?

    2010-06-22 21:09:00
  • 管理员必读10个重要MySQL客户启动选项

    2008-06-07 16:57:00
  • 在ASP中如何使用类class

    2007-09-16 17:17:00
  • Transact_SQL小手册,适合初学者

    2008-08-25 19:40:00
  • sqlserver中求字符串中汉字的个数的sql语句

    2012-06-06 19:53:37
  • asp如何实现聊天对象的链接?

    2010-05-19 21:34:00
  • asp如何读取服务器上的驱动器?

    2009-11-18 20:50:00
  • ASP GetRef 函数指针试探

    2011-03-16 11:09:00
  • SQLserver 数据库危险存储过程删除与恢复方法

    2011-09-30 11:33:54
  • ASP经常用到的函数

    2009-07-06 13:00:00
  • 如何把一个Excel文件放到ASP页面中去?

    2009-11-07 17:54:00
  • js检测浏览器语种,适合于多语言版本的站点

    2007-09-12 19:16:00
  • 如何利用SQL Server数据库快照形成报表

    2009-01-15 11:55:00
  • 丰富段落里的标签

    2008-03-16 14:11:00
  • Oracle不同数据库间对比分析脚本

    2010-07-26 13:24:00
  • SQL Server 对表的主键设计问题及解决办法

    2010-06-07 13:29:00
  • SQL Server 2008中的新日期数据类型

    2009-03-16 15:05:00
  • 一个将半角"转换为中文"的asp函数

    2007-09-19 11:47:00
  • asp如何分页显示数据库查询结果?

    2009-11-22 19:23:00
  • Html的几个小技巧

    2011-04-29 14:02:00
  • asp之家 网络编程 m.aspxhome.com