作一个表,两个字段,Genid (id int,Pdate datetime),只有一条记录;
使用存储过程得到编号,这样就肯定不会重复了。
生成编号的主要语句 update Genid
set id = right('000'+ rtrim(convert(varchar,isnull((select id from Genid where datediff(dd,Pdate,getdate()) = 0),0) + 1)),4)
select id //这个就是递增后的编号了。
from genid
使用存储过程得到编号,这样就肯定不会重复了。
生成编号的主要语句 update Genid
set id = right('000'+ rtrim(convert(varchar,isnull((select id from Genid where datediff(dd,Pdate,getdate()) = 0),0) + 1)),4)
select id //这个就是递增后的编号了。
from genid
句 update Genid
set id = right('000'+ rtrim(convert(varchar,isnull((select id from Genid where datediff(dd,Pdate,getdate()) = 0),0) + 1)),4),
pdate = case when datediff(dd,pdate,getdate()) <> 0 then getdate() else pdate end
create table genid
(id int primary key,
Pdate datetime
)
drop procedure Pgenid
go
create procedure PGenid
as
begin
update Genid
set id = (isnull((select id from Genid where datediff(dd,Pdate,getdate()) = 0),0) + 1),
pdate = (case when datediff(dd,pdate,getdate()) <> 0 then getdate() else pdate end)
select right('000'+ rtrim(convert(varchar,id)),4) from Genid
enddrop table genidinsert genid
values
(1,'2000-1-1')exec Pgenid存储过程返回的结果集就是流水号,也可以用OUT的参数了,基本方法就是这样了。
(id int primary key,
Pdate datetime
)
drop procedure Pgenid
go
create procedure PGenid
as
begin
update Genid
set id = (isnull((select id from Genid where datediff(dd,Pdate,getdate()) = 0),0) + 1),
pdate = (case when datediff(dd,pdate,getdate()) <> 0 then getdate() else pdate end)
select right('000'+ rtrim(convert(varchar,id)),4) from Genid
enddrop table genid --->这句放这里干什么?insert genid
values
(1,'2000-1-1')exec Pgenid存储过程返回的结果集就是流水号,也可以用OUT的参数了,基本方法就是这样了。
只有两个Create,再加写入一个种子的Insert是有用的。