会议编号 自动生成年月日加3位流水号有没有代码,参考下
答案:2 悬赏:20 手机版
解决时间 2021-04-02 23:20
- 提问者网友:回忆在搜索
- 2021-04-02 03:37
会议编号 自动生成年月日加3位流水号有没有代码,参考下
最佳答案
- 五星知识达人网友:煞尾
- 2021-04-02 05:13
--一种方式就是先从数据表中取编号最大值,然后流水+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
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
全部回答
- 1楼网友:孤独的牧羊人
- 2021-04-02 06:32
oracle数据库吗?
如果是oracle,用sequence,非常简单
select to_char(sysdate,'YYYYMMDD')||seq.next_val from dual追问不是,sql2012
如果是oracle,用sequence,非常简单
select to_char(sysdate,'YYYYMMDD')||seq.next_val from dual追问不是,sql2012
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯