数据库添加级别编号的小案例

系统 1518 0

一级(2位),二级以后占用(3位),比如一级:01或02,二级:01001或01003,那三级编号就是01001001或01111112,我就写了一个存储过程【个人测试没问题,可以参考一下】获取即将要添加的编号(模拟场景:选择权限的树状图节点添加子集节点,需要计算出子集节点的将要插入的id)

ALTER PROCEDURE [dbo].[GetMaxId]
(
   @tablename nvarchar(100),--表名
   @idcol nvarchar(100),--列名
   @parent nvarchar(100),--父级编号
   @jb int,--级别
   @ids nvarchar(50) output--最终的id
)
AS
BEGIN
declare @str nvarchar(2000)
set @str=''
   --一级添加
   if @jb=1
     begin
      set @str=@str+'select @ids=cast(max( '+@idcol+' ) as int)+1 from '+@tablename+' where len( '+@idcol+')<=2 '
      exec sp_executesql @str,N'@ids nvarchar(50) output',@ids output
     if(len(@ids) is null)
          set @ids='01'
     else IF(len(@ids)<=2)
       set @ids='0'+@ids
     end
   else
    begin
       set @str=@str+'select @ids=CAST(max(RIGHT( '+@idcol+',3))as int)+1 from '+@tablename+' where len( '+@idcol+')=2+('+CAST (
@jb as nvarchar(20)) +'-1)*3 and '+@idcol+' like '''+@parent+'%'''
       exec sp_executesql @str,N'@ids nvarchar(50) output',@ids output
        IF(len(@ids)=1)
         set @ids='00'+@ids
       else IF(len(@ids)=2)
         set @ids='0'+@ids
      else if(len(@ids) is null)
           set @ids='001'
       IF @parent<>'' and @parent is not null
        SET @ids=@parent+@ids
    end
END

数据库添加级别编号的小案例


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论