公司內設備管理系統中設備建賬功能,功能目的是對新進設備進行記錄并入庫。其中設備編號一項定義為自己修改(查看之前的設備號,取一個不重復的值來填寫),感覺特別麻煩!用存儲過程自動生成編碼豈不是更效率。
? 需求:根據設備組代碼(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
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
