我是靠谱客的博主 朴实黑裤,最近开发中收集的这篇文章主要介绍根据日期+顺序号生成流水号的存储过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 前几天做一个项目,要求能按日期+顺序号生成流水号,查看网上相关方法发现都差不多,但是没有完整的编码,被逼无赖,自己做一个,顶一顶也用起来了.

本存储过程在sql server 2000下测试通过:

CREATE PROCEDURE [dbo].[CreatePcdID]
(
@PcdID char(20)  output--输出派车单号
)
AS
declare @result int --当天派车记录
declare @firstresult int--第一次运行
declare @MaxPcdID char(11)--当日最大的派车单号
declare  @Num int--当日流水号
set  @MaxPcdID=(select Top 1 PcdID from Pcd  where convert(char(10),PCDate,101)=convert(char(10),getdate(),101) order by PcdID DESC)
set @firstresult=(select count(*) from Pcd)--第一次运行系统,无记录时使用
set @result=(select count(*) from Pcd where convert(char(10),PCDate,101)=convert(char(10),getdate(),101))--查找当天记录
set  @Num=cast(right(@MaxPcdID,3) as int)+1--流水号自动增加1
--变量声明部分,如下是程序主体--
if @result>0--当天已经有派车记录
set @PcdID=convert(varchar(100),getdate(),112)+replace(str(@Num,3),' ','0')
if  @result=0 --当天没有记录或没有记录
set  @PcdID=convert(varchar(100),getdate(),112)+'001'
if  @firstresult=0
set @PcdID=convert(varchar(100),getdate(),112)+'001'
GO

如下是建表的代码

CREATE TABLE [dbo].[Pcd] (
 [ID] [int] IDENTITY (1, 1) NOT NULL ,
 [PcdID] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [ItemNO] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [OrderID] [int] NOT NULL ,
 [Csno] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [Team] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [PCDate] [smalldatetime] NOT NULL ,
 [Marks] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
 [OthersMarks] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]

测试通过,不过暂时允许一天有999个顺序号,如果到了1000个,会生成一个错误的流水号,这个倒是要注意,不过对于我的应用来说1000个流水号一天是完全充分够用的,也就没有注意进一步的改进.

最后

以上就是朴实黑裤为你收集整理的根据日期+顺序号生成流水号的存储过程的全部内容,希望文章能够帮你解决根据日期+顺序号生成流水号的存储过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部