1
CREATE PROCEDURE P_GetHId
2
(
3
@len int, --长度
4
@str varchar(10), --前缀
5
@tableName varchar(20), --表名
6
@tableFild varchar(20) --字段名
7
)
8
AS
9
BEGIN
10
SET NOCOUNT ON
11
declare @stra varchar(20)
12
declare @sql varchar(800)
13
14
set @stra='0000000000000000000'
15
set @len=@len-len(@str)
16
17
set @sql='
18
declare @fId varchar(50)
19
set @fId=''0''
20
select top 1
21
@fId='+@tableFild+' from '+@tableName+'
22
order by '+@tableFild+' desc'
23
set @sql=@sql+'
24
select '''+@str+'''+left('''+@stra+''','+cast(@len as varchar(2))+'-len(right(
25
@fId,'+cast(@len as varchar(2))+')+1))
26
+cast(right(@fId,'+cast(@len as varchar(2))+')+1 as varchar(50))'
27
exec(@sql)
28
end
29
GO
30

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

调用 exec P_GetHId 10,'PN','表名','字段名' 得到结果为 PN00000001 开始递增