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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容