公司內(nèi)設(shè)備管理系統(tǒng)中設(shè)備建賬功能,功能目的是對新進(jìn)設(shè)備進(jìn)行記錄并入庫。其中設(shè)備編號一項定義為自己修改(查看之前的設(shè)備號,取一個不重復(fù)的值來填寫),感覺特別麻煩!用存儲過程自動生成編碼豈不是更效率。
? 需求:根據(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
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

