CREATE Function get_nextno(
@as_no varchar(20),
@ai_len integer)
returns varchar(20)
WITH ENCRYPTION
AS
begin
declare @temp_len integer
declare @temp_minus integer
declare @temp_int numeric(20,0)
declare @temp_char varchar(20)
declare @temp_one varchar(1)
declare @temp_two varchar(1)
select @as_no = upper(@as_no)
select @temp_len = len(@as_no)
select @temp_minus = @ai_len - @temp_len
if @temp_minus > 0
begin
select @as_no = replicate('0',@temp_minus) + @as_no
end
else if @temp_minus < 0
begin
select @as_no = replicate('0',@ai_len - 1) + '1'
return @as_no
end
if isnumeric(@as_no) = 1
begin
select @temp_int = convert(numeric(20,0),@as_no) + 1
select @as_no = convert(varchar,@temp_int)
select @temp_len = len(@as_no)
select @temp_minus = @ai_len - @temp_len
if @temp_minus > 0
begin
select @as_no = replicate('0',@temp_minus) + @as_no
return @as_no
end
else if @temp_minus = 0
begin
return @as_no
end
else
begin
select @as_no = 'A' + replicate('0',@ai_len - 1)
return @as_no
end
end
else
begin
select @temp_len = 0
while @temp_len < @ai_len
begin
select @temp_one = substring(@as_no,@ai_len - @temp_len,1)
if @temp_one = 'Z'
begin
select @as_no = left(@as_no,@ai_len - @temp_len - 1) + '0' + right(@as_no,@temp_len)
select @temp_len = @temp_len + 1
end
else
begin
if @temp_one = '9'
begin
select @temp_two = substring(@as_no,@ai_len - @temp_len - 1,1)
if isnumeric(@temp_two) = 1
begin
select @as_no = left(@as_no,@ai_len - @temp_len - 1) + '0' + right(@as_no,@temp_len)
select @temp_len = @temp_len + 1
continue
end
else
begin
select @temp_one = 'A'
end
end
else
begin
select @temp_int = ascii(@temp_one) + 1
select @temp_one = char(@temp_int)
end
select @as_no = left(@as_no,@ai_len - @temp_len - 1) + @temp_one + right(@as_no,@temp_len)
return @as_no
end
end
end
Return @as_no
end
get_nextno
最新推荐文章于 2025-01-02 22:31:54 发布