您的位置:首页 > 数据库

SQL 数据库生成自动编号代码

2010-02-06 18:39 567 查看
--exec [P_AutoGenerateNumber] 'reception_apply','generate_code','',7
/*
过程说明:生成自动编号
创建时间:2010年1月12日
作者:feng
debug:尚未考虑编号溢出情况
*/
ALTER proc [P_AutoGenerateNumber]
(
@tableName varchar(100)='meeting_apply', --表名
@byteName varchar(100)='generate_code', --字段名
@Remark varchar(10)='M', --标示
@subLen int=4 --截取长度
)
WITH ENCRYPTION
as

declare @SQLString NVARCHAR(4000)
declare @OutputValue int
declare @subLenVar NVARCHAR(20)
declare @TempValue varchar(20)

set @subLenVar =convert(varchar(20),@subLen)
set @TempValue ='00000000000000000000'

declare @OutputValueToVar varchar(20)

set @SQLString = N'select @OutputValueEx=count(*) from '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output

if @OutputValue !=0
begin
SET @SQLString = N'SELECT @OutputValueEx=max(cast(right('+@byteName+','+@subLenVar+') as int))+1 FROM '+@tableName+' where '+@byteName+' is not null or '+@byteName+'!='''''
EXECUTE sp_executesql @SQLString, N'@OutputValueEx int output',@OutputValueEx= @OutputValue output
set @OutputValueToVar = cast(@OutputValue as varchar(20))
select @Remark+right(@TempValue,@subLen-len(@OutputValueToVar))+@OutputValueToVar as autocode
end
else --尚未生成编号
select @Remark+right(@TempValue,@subLen-1)+'1' as autocode
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: