`
禹爸爸
  • 浏览: 80157 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

获取单据编号的存储过程

阅读更多
CREATETABLE[dbo].[BillNo](
[Id][int]IDENTITY(1,1)NOTNULL,
[BillName][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[MaxNo][int]NULL,
[MaxDate][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[Prefix][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[NumBit][int]NULLCONSTRAINT[DF_BillNo_NumBit]DEFAULT((0)),
[Style][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[Memo][text]COLLATEChinese_PRC_CI_ASNULL,
[CreateDate][datetime]NULLCONSTRAINT[DF_BillNo_CreateDate]DEFAULT(getdate()),
[EditDate][datetime]NULL,
[State][int]NULLCONSTRAINT[DF_BillNo_State]DEFAULT((0)),
CONSTRAINT[PK_BillNo]PRIMARYKEYCLUSTERED
(
[Id]ASC
)
WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)
ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]

GO

CREATEPROCEDURE[dbo].[p_GetBillNo]--产生按年月日排列的档案号
@BillNamevarchar(20),
@Novarchar(20)output,--为产生的档案号
@NumBitint=4--编号位数

AS
DECLARE@MaxNoint,
@MaxDatevarchar(20),
@Prefixvarchar(20),
@xNumBitint,
@CurrDatevarchar(12),
@FILL_ZEROint,
@iMaxNoint

SET@FILL_ZERO=100000000
SET@CurrDate=CONVERT(VARCHAR(8),GETDATE(),112)

SELECT@MaxNo=MaxNo,@MaxDate=MaxDate,@Prefix=Prefix,@xNumBit=NumBitFROMBillNoWITH(XLOCK)WHEREBillName=@BillName
IF@@ROWCOUNT<>1RETURN-1

IF@xNumBit<>0SET@NumBit=@xNumBit

IF@MaxDate<>@CurrDateOR@MaxDateISNULLOR@MaxNoISNULL
SET@iMaxNo=1
ELSE
SET@iMaxNo=@MaxNo+1

UPDATEBillNo
SETMaxNo=@iMaxNo,MaxDate=@CurrDate,EditDate=GetDate()WHEREBillName=@BillName
IF@@ROWCOUNT<>1RETURN-1

SET@No=COALESCE(@Prefix,'')+@CurrDate+RIGHT(CAST(@FILL_ZERO+@iMaxNoASVARCHAR),@NumBit)

RETURN1
分享到:
评论

相关推荐

    一个写的很不错的获取单据编号存储过程

    一个写的很不错的获取单据编号存储过程

    K3单据编号生成代码

    K3单据编号生成代码

    c#后台生成不重复的订单号及后台存储过程

    SQL,C#,不重复编码,订单号 1. C#后台封装方法 通用获取最大单据编号, 可以生成以下3个类型的单号 CG1603-000001 CG201603-000001 CG20160321-000001

    BOS代码二次开发FAQ

    2.BOS后台中如何调用存储过程返回结果集? 3. 客户化开发如何在标准单据上增加F7字段 4.如何通过二次开发设置BIM不支持数据类型的初始置 5. 通用过滤中如何实现F7的组织隔离? 6. 如何在BIM开发复制新增时不复制...

    零配件库存管理系统1

    出入库单据的属性:单据号、出/入库时间、客户编号、出/入库类型(也可不要该属性,从单据号的第一个字符中可获取)、总金额、是否缺货、备注; 图3 货物详细资料 图4 客户详细资料 四、 附加说明 系统的...

    明日科技C#开发入门及项目实战

    实例129 利用存储过程录入数据 实例130 使用oledbdatareader读取文本文件的内容 实例131 使用sqldatareader读取用户登录信息 实例132 使用断开式连接的方式录入数据 实例133 使用断开式连接批量更新数据库中的数据 ...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例129 利用存储过程录入数据 219 实例130 使用oledbdatareader读取文本文件的内容 222 实例131 使用sqldatareader读取用户登录信息 223 实例132 使用断开式连接的方式录入数据 226 实例133 使用断开式连接批量更新...

    C#示例(配套光盘源码)第四部分

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...

    C#示例(配套光盘源码)第五部分

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...

    C#示例(配套光盘源码)第三部分

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...

    C#示例(配套光盘源码)第一部分

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...

    明日科技C#示例源码

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 ...

    C#示例(配套光盘源码)第二部分

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...

    明日科技C#示例源码.part01

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用...

    明日科技C#示例源码.part03

    实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用...

Global site tag (gtag.js) - Google Analytics