1CREATE PROCEDURE P_GetHId
2(
3 @len int, --长度
4 @str varchar(10), --前缀
5 @tableName varchar(20), --表名
6 @tableFild varchar(20) --字段名
7)
8AS
9BEGIN
10SET NOCOUNT ON
11declare @stra varchar(20)
12declare @sql varchar(800)
13
14set @stra='0000000000000000000'
15set @len=@len-len(@str)
16
17set @sql='
18 declare @fId varchar(50)
19 set @fId=''0''
20select top 1
21 @fId='+@tableFild+' from '+@tableName+'
22order by '+@tableFild+' desc'
23set @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))'
27exec(@sql)
28end
29GO
30
2(
3 @len int, --长度
4 @str varchar(10), --前缀
5 @tableName varchar(20), --表名
6 @tableFild varchar(20) --字段名
7)
8AS
9BEGIN
10SET NOCOUNT ON
11declare @stra varchar(20)
12declare @sql varchar(800)
13
14set @stra='0000000000000000000'
15set @len=@len-len(@str)
16
17set @sql='
18 declare @fId varchar(50)
19 set @fId=''0''
20select top 1
21 @fId='+@tableFild+' from '+@tableName+'
22order by '+@tableFild+' desc'
23set @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))'
27exec(@sql)
28end
29GO
30
调用 exec P_GetHId 10,'PN','表名','字段名' 得到结果为 PN00000001 开始递增