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
[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单据编号生成代码
SQL,C#,不重复编码,订单号 1. C#后台封装方法 通用获取最大单据编号, 可以生成以下3个类型的单号 CG1603-000001 CG201603-000001 CG20160321-000001
2.BOS后台中如何调用存储过程返回结果集? 3. 客户化开发如何在标准单据上增加F7字段 4.如何通过二次开发设置BIM不支持数据类型的初始置 5. 通用过滤中如何实现F7的组织隔离? 6. 如何在BIM开发复制新增时不复制...
出入库单据的属性:单据号、出/入库时间、客户编号、出/入库类型(也可不要该属性,从单据号的第一个字符中可获取)、总金额、是否缺货、备注; 图3 货物详细资料 图4 客户详细资料 四、 附加说明 系统的...
实例129 利用存储过程录入数据 实例130 使用oledbdatareader读取文本文件的内容 实例131 使用sqldatareader读取用户登录信息 实例132 使用断开式连接的方式录入数据 实例133 使用断开式连接批量更新数据库中的数据 ...
实例129 利用存储过程录入数据 219 实例130 使用oledbdatareader读取文本文件的内容 222 实例131 使用sqldatareader读取用户登录信息 223 实例132 使用断开式连接的方式录入数据 226 实例133 使用断开式连接批量更新...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 ...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用LinqTo...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用...
实例098 通过存储过程对职工信息进行管理 350 实例099 使用触发器添加、修改及删除职工信息 356 实例100 使用LinqToSql操作SQL数据库 358 实例101 使用LinqToObjects操作数组及集合 363 实例102 使用...