公司內(nèi)設(shè)備管理系統(tǒng)中設(shè)備建賬功能,功能目的是對新進(jìn)設(shè)備進(jìn)行記錄并入庫。其中設(shè)備編號一項(xiàng)定義為自己修改(查看之前的設(shè)備號,取一個(gè)不重復(fù)的值來填寫),感覺特別麻煩!用存儲過程自動(dòng)生成編碼豈不是更效率。
? 需求:根據(jù)設(shè)備組代碼(PC)+遞增數(shù)字,構(gòu)成編碼,編碼中數(shù)字必須為三位數(shù),無三位數(shù)的,以‘0’占位。
??? 代碼如下:
1 -- 測試數(shù)據(jù)庫準(zhǔn)備 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 -- 創(chuàng)建測試表 12 ALTER proc [ dbo ] . [ get_new_id ] 13 @new_id varchar ( 16 ) output, -- 生產(chǎn)的編號 14 @number int , -- 設(shè)置編碼數(shù)字的最大位數(shù) 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
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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