利用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
投稿

猜你喜欢

  • 高考要来啦!用Python爬取历年高考数据并分析

    2021-06-10 04:08:25
  • Mysql数据库手动及定时备份步骤

    2024-01-27 10:43:15
  • Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块

    2022-08-07 23:03:11
  • mysql存储过程 游标 循环使用介绍

    2024-01-12 20:28:56
  • Python2.X/Python3.X中urllib库区别讲解

    2022-08-03 01:45:39
  • 一步步教你MySQL查询优化分析教程

    2024-01-27 09:56:23
  • python中readline判断文件读取结束的方法

    2022-12-14 06:22:51
  • mysql的sql语句特殊处理语句总结(必看)

    2024-01-17 02:10:05
  • mysql多表join时候update更新数据的方法

    2024-01-15 12:56:37
  • Go语言利用time.After实现超时控制的方法详解

    2024-04-26 17:21:50
  • 记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制

    2010-04-07 22:35:00
  • js判断变量是否未定义的代码

    2023-08-16 03:43:27
  • 基于MSELoss()与CrossEntropyLoss()的区别详解

    2022-05-17 19:18:27
  • Golang中map的深入探究

    2024-04-26 17:23:35
  • 深入解析Python小白学习【操作列表】

    2023-02-18 03:48:07
  • Django如何实现内容缓存示例详解

    2022-02-23 15:33:01
  • 详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    2022-01-24 04:44:33
  • 在pycharm中文件取消用 pytest模式打开的操作

    2022-06-20 18:16:19
  • python使用Matplotlib画条形图

    2023-09-04 06:30:50
  • python实现一个围棋小游戏

    2022-02-02 18:52:50
  • asp之家 网络编程 m.aspxhome.com