CREATE procedure 存储过程名称
(
@SequencePrefix varchar(10), --前缀
@SequenceLength int, --需要返回的标示长度
@KeyName nvarchar(30) --标示的对象
)
as
begin
if(@SequenceLength<=0)
begin
set @SequenceLength=10
end
if(@SequenceLength>20)
begin
set @SequenceLength=20
end
declare @sequence nvarchar(20),@maxValue int,@sequenceStr nvarchar(40)
set @sequence='00000000000000000000'
set @sequenceStr=@SequencePrefix+@sequence
update 标示表 set @maxValue = sequenceValue + 1,sequenceValue = sequenceValue + 1,prefix =left(@sequenceStr,@SequenceLength-LEN(@maxValue)) where keyName=@KeyName --更新标示表,并返回+1之后最大值
select left(@sequenceStr,@SequenceLength-LEN(@maxValue))+CONVERT(nvarchar(40),@maxValue)
end