默认情况下自动生成,前两位数是当前年份的最后两位数

时间:2016-01-05 21:12:30

标签: sql-server database

我想使用MS SQL函数。项目编号应该是 默认情况下自动生成,前两位是当前年份的最后两位数字,然后是“ - ”,最后三位数字是基于年份的序列号。

例如16-000然后接下来将是16-001,但是当2017年到来时它将再次改变17-000并继续。

1 个答案:

答案 0 :(得分:0)

这是我的成就,需要进行某种修改,因为它会抛出异常“将varchar值'16 -001'转换为数据类型int时转换失败。”当这部分正在执行时。  设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - '+ RIGHT(@ pId,3)+1

我的功能完整代码。

创建函数NextProjectNumber()     返回char(6)     如     开始    声明@pId varchar(50),@ pYear int,@ serial varchar(3),@curYYar int
    SELECT @pId =来自[JobPortalDb]的ProjectId。[dbo]。[Projects]其中ProjectId =(从[JobPortalDb]中选择max(ProjectId)。[dbo]。[Projects])     设置@currYear =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))      --SELECT @ pId,@ year

如果@pId IS为NULL,则设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - 001'    否则设置@pYear = SUBSTRING(@ pId,1,2)

如果@pYear = @currYear    设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - '+ RIGHT(@ pId,3)+1

如果@currYear> @pYear    设置@pId =(SELECT RIGHT(CONVERT(VARCHAR(8),year(GETDATE()),1),2))+' - 001'

返回@pId    结束