您正在使用 IPV4 [54.152.5.73] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]保护绿色环境,构建和谐社会      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 清明节 007
2024年 劳动节 034
2025年 元 旦 279
2025年 春 节 307
综合数码金融娱乐服务报刊政府机构 推荐 排名 今日 申请 友情  
您现在的位置:首页 >> 数据库 >> 内容
本类新增
本类热门
利用sql函数生成不重复的订单号的代码
内容摘要: ALTERfunction[dbo].[GetOrderNum](@ebaystockflagvarchar(20)//规则字母)returnsvarchar(100)ASBEGINdeclare@dtCHAR(8)declare@flagvarchar(20)set@flag='B'+@ebaystockflagset@dt=CONVERT(CHAR(8)......
ALTERfunction[dbo].[GetOrderNum](

@ebaystockflagvarchar(20)//规则字母

)

returnsvarchar(100)

AS

BEGIN

declare@dtCHAR(8)

declare@flagvarchar(20)

set@flag='B'+@ebaystockflag

set@dt=CONVERT(CHAR(8),GETDATE(),112)

declare@maxvarchar(100)

SELECT@max=MAX(OrderNumber)

FROMtb_EbayOrderWITH(XLOCK,PAGLOCK)

WHEREOrderNumberlike@flag+'%'

set@max=isnull(@max,@flag+@dt+'000')--查不到结果给个默认值

declare@avarchar(100)

declare@numvarchar(10)

declare@ordernumvarchar(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

elseif(SUBSTRING(@a,3,1)=0andSUBSTRING(@a,2,1)=0)--有三个0

begin

set@num=1

end

elsebegin--只有一个0的情况

set@num=Convert(int,SUBSTRING(@a,2,LEN(@a))+1)

end

end

elsebegin--数字大于100的情况

set@num=Convert(varchar,@a+1)

end

if(LEN(@num)=1)--截取后不满三位的补0

beginset@num='00'+@numend

if(LEN(@num)=2)

beginset@num='0'+@numend

set@ordernum=@flag+@dt+@num

return@ordernum

END

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

知识星球

代码如下:

SELECT*FROMtb_EbayOrderWITH(TABLOCKX)

SELECT*FROMtb_EbayOrderListWITH(TABLOCKX)

SELECT*FROMtb_EbayOrderUserInfoWITH(TABLOCKX)

调用:selectdbo.GetOrderNum(@ebaystockflag)

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:MySQL验证用户权限的方法

 

下一篇:SQL server 自增ID--序号自动增加的字段操作

发布日期:2023/5/9
手机扫二维码直达本页
发布时间:13:02:58
点  击:10
录  入:齐天大圣
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....