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

2022-05-24 0 762

复制代码 代码如下:

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)

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql 利用sql函数生成不重复的订单号的代码 https://www.niceym.com/60453.html