zoukankan      html  css  js  c++  java
  • SQL SERVER存储过程生成字母+数字的编码

      公司内设备管理系统中设备建账功能,功能目的是对新进设备进行记录并入库。其中设备编号一项定义为自己修改(查看之前的设备号,取一个不重复的值来填写),感觉特别麻烦!用存储过程自动生成编码岂不是更效率。

       需求:根据设备组代码(PC)+递增数字,构成编码,编码中数字必须为三位数,无三位数的,以‘0’占位。

        代码如下: 

     1 --测试数据库准备
     2 use master
     3 go
     4 if exists(select * from dbo.sysdatabases where name='hzf')
     5 drop database hzf
     6 go
     7 create database hzf
     8 go
     9 use hzf
    10 go
    11 --创建测试表
    12 ALTER proc [dbo].[get_new_id] 
    13     @new_id varchar(16) output,    --生产的编号
    14     @number int,                --设置编码数字的最大位数
    15     @group varchar(5)            --编号字母
    16 as
    17 begin
    18  
    19     set @new_id = null
    20      
    21     select top 1 @new_id = ID from test_id where id like @group+'%' order by convert(int,RIGHT(id,LEN(id)-len(@group)) ) desc
    22      
    23     if @new_id is null
    24         set @new_id = @group+REPLICATE('0',2)+'1'
    25     else
    26         begin
    27             declare @big varchar(16)
    28             set @big = convert(int, RIGHT(@new_id,LEN(@new_id)-len(@group)) )+1 
    29             if @big <100
    30             begin
    31                 set @big = REPLICATE('0',3-LEN(@big)) + @big
    32             end
    33             set @new_id = @group + @big 
    34         end
    35      
    36  
    37 end
    38  
    39 GO
    40  
    41 --测试
    42 declare @test int
    43 set @test=1
    44 while(@test<=20)
    45 begin
    46     declare @new_id    varchar(14)
    47     exec get_new_id @new_id output,7,'PC'
    48     insert into test_id values(@new_id)
    49     set @test = @test+1
    50 end
    51 select * from test_id

     

  • 相关阅读:
    GDB编辑、搜索源码以及在线帮助
    GDB查看栈信息
    GDB信号处理
    GDB反向调试
    GDB调试多进程程序
    GDB后台调试命令
    GDB non-stop模式
    GDB调试多线程程序
    GDB禁用删除断点
    解决Mac OS下Eclipse、IntelliJ IDEA打开其他窗口默认全屏
  • 原文地址:https://www.cnblogs.com/wshzf/p/3741661.html
Copyright © 2011-2022 走看看