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

 

posted @ 2025-03-04 13:22  牛腩  阅读(17)  评论(0)    收藏  举报