SQL Server数据库中用存储过程来取顺序号
SQL Server数据库中用存储过程来取顺序号
表sys_number,字段name字符,表示前缀,value数字,一个一个递增
存储过程代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[usp_GetSysid]
@name varchar(50),
@initvalue int,
@id int output
as
/*===获取各种编号====*/
--开始事务
begin tran tr
--判断是否存在
if not exists(select * from sys_number where name=@name )
begin
insert into Sys_Number(name,value) values(@name,@initvalue)
end
--取值
select @id=value from sys_number with(XLOCK) where name=@name
if @id<@initvalue set @id=@initvalue
--更新值
update sys_number set value=@id+1 where name=@name --and value=@id
--提交事务
if @@error!=0
begin
rollback tran tr
select 0
end
else
begin
commit tran tr
select @id
end
使用:
DECLARE @return_value int,
@id int
EXEC @return_value = [dbo].[usp_GetSysid]
@name = N'GH20250304', --前缀
@initvalue = 1, --初始值
@id = @id OUTPUT --返回顺序号,前台程序可以拼接上name