利用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)


猜你喜欢
高考要来啦!用Python爬取历年高考数据并分析

Mysql数据库手动及定时备份步骤

Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

mysql存储过程 游标 循环使用介绍
Python2.X/Python3.X中urllib库区别讲解
一步步教你MySQL查询优化分析教程
python中readline判断文件读取结束的方法
mysql的sql语句特殊处理语句总结(必看)
mysql多表join时候update更新数据的方法
Go语言利用time.After实现超时控制的方法详解
记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制
js判断变量是否未定义的代码
基于MSELoss()与CrossEntropyLoss()的区别详解

Golang中map的深入探究

深入解析Python小白学习【操作列表】
Django如何实现内容缓存示例详解

详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

在pycharm中文件取消用 pytest模式打开的操作

python使用Matplotlib画条形图

python实现一个围棋小游戏
