SLQ生成订单号 序列码 流水号的存储过程
来源:互联网 发布:node.js高级编程 编辑:程序博客网 时间:2024/06/06 21:48
经过几个小时的折腾,写出一个SQL生成序列号,流水号的存储过程。
根据自己提供的前缀,和设置序列码的长度依次生成 前缀+日期+序列码长度(号)
先贴代码:
USE [TEST]GO/****** Object: StoredProcedure [dbo].[GetSerialNo] Script Date: 08/04/2013 18:38:25 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:leungs-- Create date: 2013-8-2-- Description:generation serializer number -- =============================================ALTER PROCEDURE [dbo].[GetSerialNo] @prefix varchar(10)ASBEGINDECLARE @length int; SET @length = 4; --需要生产的流水号位数DECLARE @lastNo varchar(30); SET @lastNo = '' --存贮最后一条数据DECLARE @number int; --保存当前数DECLARE @i int; SET @i= 0; --遍历所用索引SELECT @number = COUNT(*) FROM TBSerialNo WHERE SUBSTRING(SerialNo,1+LEN(@prefix),LEN(CONVERT(VARCHAR(12),GETDATE(),112)))=CONVERT(VARCHAR(12),GETDATE(),112) AND SERIALNO LIKE @prefix+SUBSTRING(SerialNo,LEN(@prefix)+1,LEN(SerialNo)-LEN(@prefix)-@length)+'%';IF(@number<>0)BEGINSET @lastNo = (SELECT TOP 1 SerialNo FROM (SELECT SerialNo,SUBSTRING(SerialNo,(LEN(@prefix)+LEN(SerialNo)-LEN(@prefix)+1)-@length,@length) AS Sort from TBSerialNo WHERE SERIALNO LIKE @prefix+SUBSTRING(SerialNo,LEN(@prefix)+1,LEN(SerialNo)-LEN(@prefix)-@length)+'%' ) T ORDER BY Sort DESC)SET @lastNo = SUBSTRING(@lastNo,LEN(@lastNo)-@length+1,@length);ENDELSEBEGINWHILE(@i<@length)BEGINSET @lastNo = @lastNo + '0';SET @i = @i + 1;ENDSET @i = 0;ENDIF(CONVERT(INT,@lastNo)>0)BEGINSET @number = CONVERT(INT,SUBSTRING(@lastNo,LEN(@lastNo)-@length+1,@length))+1;--得到流水号ENDELSEBEGINSET @number = 1;ENDDECLARE @temp int; SET @temp = 10; --临时变量用于循环处理--取最后一条数据的最后一个数字WHILE (@i<@length)BEGINIF(@number*10>@temp-1)BEGINSET @lastNo = SUBSTRING(@lastNo,1,LEN(@lastNo)-1);ENDSET @temp = @temp * 10; --每循环一次*10SET @i = @i + 1; --更新索引值END--END WHILE--犹豫上面循环@temp最后一次多*10 所以要做处理掉再对比IF(@number>@temp/10-1)BEGINSELECT '当前前缀的订单已满' AS [Message];ENDELSEBEGINSET @lastNo = @prefix+CONVERT(VARCHAR(12),GETDATE(),112)+ @lastNo + CONVERT(VARCHAR(10),@number);INSERT INTO dbo.TBSerialNo(SerialNo) VALUES (@lastNo);SELECT '' AS [Message],@lastNo AS SerialNo;ENDEND
- SLQ生成订单号 序列码 流水号的存储过程
- 存储过程生成订单号
- 流水号生成存储过程
- 存储过程生成流水号
- 存储过程生成流水号
- myql存储过程生成订单号
- 根据日期+顺序号生成流水号的存储过程
- 一个用来生成流水号的存储过程
- 一个用来生成流水号的存储过程
- 一个用来生成流水号的存储过程
- 用mysql的存储过程实现生成唯一订单号
- SQL存储过程生成流水号
- SQL存储过程生成流水号
- 流水号工单号生成(存储过程)
- 存储过程生成流水号----灵活版
- MYSQL 存储过程 生成唯一流水号
- 随机生成生成你的订单号序列
- 流水号的生成(日期+业务码+自增序列)
- thinkphp入门
- MTK6589平板上launcher的一些小修改
- 解决IE兼容的方法
- Device Power Management(CN)
- GuessNumber
- SLQ生成订单号 序列码 流水号的存储过程
- C++ 格式化输出
- 手动创建按钮
- CString转int _ttoi() _tcstoul() Format ASSERT() Format的用法
- 系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行
- 关于示波器是否必须要接地线的疑问
- web服务器运维脚本
- 英国MIE设计工作室8月来京出席BIRTV讲座
- hdu1231最大连续子序列