手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >利用sql函数生成不重复的订单号的代码
利用sql函数生成不重复的订单号的代码
摘要:复制代码代码如下:ALTERfunction[dbo].[GetOrderNum](@ebaystockflagvarchar(20)//规...

复制代码 代码如下:

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)

【利用sql函数生成不重复的订单号的代码】相关文章:

sql2008 附加数据库时出现错误5123提示的解决方法

SqlServer表和EXCEL数据批量复制方法

在程序中压缩sql server2000的数据库备份文件的代码

在SQL中使用convert函数进行日期的查询的代码

sql基本函数大全

sqlserver只有MDF文件恢复数据库的方法

sql2000 卸载后重新安装时不能安装的解决办法

SQL Server自动生成日期加数字的序列号

SQL Server编写函数获取汉字的拼音码

解决MSSQL2005远程连接sql2000非默认端口数据库的问题

精品推荐
分类导航