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

复制代码 代码如下:

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)

时间: 2024-12-31 21:51:12

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

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

复制代码 代码如下: 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

分享SQL Server删除重复行的6个方法_MsSql

1.如果有ID字段,就是具有唯一性的字段 复制代码 代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同. 2. 如果是判断所有字段也可以这样 复制代码 代码如下: select * into #aa from table group by id1,i

利用SQL SERVER建立登录WINDOWS帐号_MsSql

那一刻,我的心跳到了嗓子眼. 运行建立帐号命令,OK! 远程登录,输入帐号,密码,OK!终于又进去了! ××××××××××××××××××× 我忽然发现,数据库服务器登录不了了. 提示帐号密码过期.按提示修改,提交,又说我没权限修改密码! CNM,这样来害我.这个帐号属于administrators,原先那个默认的administrator被我停掉了.因此这个帐号是进入系统的唯一通道. 接着发现后果比我想象的要严重更多: 1.硬盘做了RAID5,这样即使拿到硬盘,可能也读不出数据库文件了. 2

利用SQL Server数据库邮件服务实现监控和预警_MsSql

背景 现在越来越多的企业.公司要求对于数据库实现7*24小时的数据库监控,一般情况下采用的就是第三方的平台来实现邮件和手机短信的监测提醒.前几日公司新上了一台服务器,急于部署程序还没来得及搭建其他相关平台,为了更好的监控数据库,暂时用SQL Server自带的邮件服务来实现对数据库的监控和预警.下面简要介绍下配置的过程便于以后使用. 配置邮件 整个部分的核心就是配置邮件服务,这部分需要一个邮件账户以及相应的邮件服务器.下面就以QQ的邮件为例进行说明. 1.设置邮件服务器 开启SMTP服务,点击开

sql server 临时表 查找并删除的实现代码_MsSql

if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#temp')) drop table #temp临时表 可以创建本地和全局临时表.本地临时表仅在当前会话中可见:全局临时表在所有会话中都可见. 本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name). SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的

获取SQL Server表字段的各种属性实例代码_MsSql

复制代码 代码如下: -- SQL Server 2000 SELECT a.name AS 字段名, CASE WHEN EXISTS (SELECT 1 FROM sysobjects WHERE xtype = 'PK' AND parent_obj = a.id AND name IN (SELECT name FROM sysindexes WHERE indid IN (SELECT indid FROM sysindexkeys WHERE id = a.id AND colid

SQL Server Table中XML列的操作代码_MsSql

复制代码 代码如下: --创建测试表 DECLARE @Users TABLE ( ID INT IDENTITY(1,1), UserInfo XML ) ---插入测试数据 DECLARE @xml XML SET @xml=' <root> <user> <userid>1</userid> <userName>test1</userName> </user> </root>' INSERT INTO @

.net怎样在最短时间内生成大量唯一 不重复的无规则的乱码(防伪码或订单号)?

问题描述 .net怎样在最短时间内生成大量唯一 不重复的无规则的乱码(防伪码或订单号)? 30C 如9位唯一不重复的无规则数字乱码:250242847,460010672,753125430 ............要求:1,插入到数据库,并且每插入一批数字乱码到数据库都检查与上一批的不重复.2,性能效率快,插入几百万条乱码到数据库不用1分钟.哪位大神做过相关的例子啊,有什么好算法解决啊. 解决方案 有随机数码随机数码生成软件 解决方案二: @weixin_34615687 对网上是有这种软件,

如何定义唯一订单号,解决用户重复交费问题?

问题描述 开发网上商城,用户购物时,可能登录在不同的两个pc上,产生一个相同订单号,交费成功,但记录的是两笔交易. 解决方案 解决方案二:引用楼主zhaijianguo8848的回复: 开发网上商城,用户购物时,可能登录在不同的两个pc上,产生一个相同订单号,交费成功,但记录的是两笔交易. 不明白这句话的意思.是说要达到这种效果,还是不要这种效果?不过产生唯一订单号,可以在订单号后面加时间戳,订单号+System.currentTimeMillis()解决方案三:取得訂單號與交費的時候,數據庫設