会议编号 自动生成年月日加3位流水号有没有代码,参考下

思路我知道,取得年月日,三位流水号递增,可代码不会写,有没有大神告知下... 思路我知道,取得年月日,三位流水号递增,可代码不会写,有没有大神告知下 展开
 我来答
jelvis
推荐于2016-05-18 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:840万
展开全部
--一种方式就是先从数据表中取编号最大值,然后流水+1
create procedure GenerateSeq
as
begin
declare @MaxSeq varchar(20)
declare @NewSeq varchar(20)
declare @seq int
select @MaxSeq=MAX(id) from t1 where SUBSTRING(1,8,id)=convert(varchar(20),getdate(),112) --取表中当日最大编号
select @seq=cast(SUBSTRING(@MaxSeq,9,3) as int)+1
if @seq>99
set @NewSeq=convert(varchar(20),getdate(),112)+CAST(@seq as varchar)
if @seq>9 and @seq<=99
set @NewSeq=convert(varchar(20),getdate(),112)+'0'+CAST(@seq as varchar)
if @seq<=9
set @NewSeq=convert(varchar(20),getdate(),112)+'00'+CAST(@seq as varchar)
print @NewSeq
end
go
exec GenerateSeq
go
--另一种方式是专门create一张特殊的表保存编号
CREATE TABLE [dbo].[GenSeq](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Code]  AS (convert(varchar(20),getdate(),112)+right((1000)+[ID],(3))),--此即为编号列
[InDate] [datetime] NULL
)
go
Create procedure [dbo].[GenerateSeq]
as
begin
 declare @code varchar(30)
 insert into GenSeq values (GETDATE());--每次插入的数据都是新的编号,先生成再取出来用即可
end
go
psbc2011
2014-07-30 · 超过90用户采纳过TA的回答
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:143万
展开全部
oracle数据库吗?

如果是oracle,用sequence,非常简单

select to_char(sysdate,'YYYYMMDD')||seq.next_val from dual
追问
不是,sql2012
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式