mssql server产生"日期+流水号"这样唯一的定单号

原创 2006年06月09日 21:49:00

   现在大部分的定单编号都是采用"日期+流水号"这样的格式,如:

“CGD20060203-0001”“CGD2006-06-09-0001”

“CGD2006-06-09-0002”“CGD2006-06-10-0001”

刚好我们要做一个汽车销售管理系统,里面有采购定单,销售定单需要采用这种格式,在论坛中各位兄弟的帮助下我是这样实现的:

1。创建一个表sequence记录定单时间和流水号.表结构如下:

sequence(currenttime,CGDH,XSDH)

2。编写存储过程,返回采购单号:

 CREATE    proc addCgOrder
@orderNum varchar(20) output
as
declare @maxtime datetime
declare @lsh varchar(10)
set @maxtime =(select top 1 currenttime  from sequence )
if(datediff( day,@maxtime,getdate())>=1)//------新的一天,更新时间和单号
begin
select @maxtime
update sequence
set currenttime=getdate(),cgdh=10001,xsdh=10001
end
else//---------------一天内的单,只更新相应的流水号
begin
update sequence
set cgdh=cgdh+1
end
select  top 1 @lsh=cgdh ,@maxtime=currenttime from sequence
set @orderNum='CGD'+convert(varchar(30),@maxtime,12)+'-'+right(@lsh,4)
GO

大致过程描述如下:

1。根据当前时间和sequence表中的时间判断是否是一天内的第一张单。

是则:更新sequence表中的时间为当前时间,流水号为1000001(为了转换成string截取方便整体+1000000)

不是则:相应的流水号+1

2。组织定单编号,放入输出参数中

3。对于销售定单我们也需要编写一个类似的procude

说明:我大体上就是这么实现的,希望对某些人有点帮助。本来想把他弄成一个函数 的,但是好想在mssql server函数中不能够更新表,所以没有实现。还希望大家多多指教!

 

SQL按照年月日生成流水号

declare @Year Int,         @Month int,         @Day int,         @Temp_No varchar(12),         @...
  • chinaboykai
  • chinaboykai
  • 2014年04月09日 10:07
  • 1498

SQL server 使用存储过程生成流水号

二、cunchu 1,首先在数据库中创建一个存放流水号的表 CREATE TABLE [dbo].[NumSeq] ( [Cate] [varchar] (2) NOT NULL...
  • Emilie_xie
  • Emilie_xie
  • 2014年06月10日 23:37
  • 1270

生成流水号(20060210-0001)的SQL函数

create table t_sql(id int identity(1,1),code char(13),[name] nvarchar(10))gocreate function f_create...
  • ldw701
  • ldw701
  • 2006年02月13日 08:29
  • 1205

生成唯一性流水号

1、表结构和效果图,这个表是用来存储基础因子的,需要的可以拓展字段,比如,升序,降序,起始序号等。SQL code CREATE TABLE [dbo].[SerialNo]( [sCode...
  • tlammon
  • tlammon
  • 2016年03月30日 01:06
  • 910

生成时间加流水号的编码

最近要做一个自动生成单号的功能,单号是唯一的,格式为“201604140001”这样的,我便想到了把id放在单号里面作为唯一标识。所以以下代码的参数sno为插入数据时的id,具体是这样得到的:sele...
  • yumuxixi
  • yumuxixi
  • 2016年04月14日 14:25
  • 2518

SQL Server 自动生成字符串主键 流水号

--Create by Ranen   bolg:http://blog.csdn.net/ranen2010--根据给定的编码比如Emp,生成一个字符串类型的流水号,如:20110102Emp000...
  • cjh200102
  • cjh200102
  • 2011年05月10日 08:40
  • 2958

sap 流水号的创建与处理

出处:http://blog.csdn.net/donkey2004112103/archive/2009/04/13/4070996.aspx本文虽然是别人的,但本人也在其中添加了属于自己的东西,无...
  • F122300349
  • F122300349
  • 2010年04月22日 16:31
  • 3128

SQL SERVER 根据日期自动生成流水号

----函数中不能使用getdate()函数----创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT nowdate=CONVERT(nvarchar(50),GETD...
  • yemy
  • yemy
  • 2009年01月31日 00:47
  • 3401

sqlserver生成有序唯一标示

CREATE procedure 存储过程名称 ( @SequencePrefix varchar(10),    --前缀 @SequenceLength int,       --需要返回的...
  • hailang9027
  • hailang9027
  • 2015年07月02日 10:58
  • 1557

SAP ABAP编程 程序中取得流水号

CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = '00' object ...
  • qinyuezhan
  • qinyuezhan
  • 2014年10月31日 14:34
  • 1378
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mssql server产生"日期+流水号"这样唯一的定单号
举报原因:
原因补充:

(最多只允许输入30个字)