以下是本人编的一个存储过程,和你要求差不多。稍微改一下就可以了。
DROP PROCEDURE get_next_id;
CREATE PROCEDURE get_next_id @next_id char(14) out AS
DECLARE @current_id numeric(14), @current_date char(8)
SELECT @current_id=MAX(CONVERT(numeric(14,0),apply_id)) FROM yf_apply
SELECT @current_date=CONVERT(char(8), getdate(),112)
if (@current_id=null) or (substring(str(@current_id),1,8)<@current_date)
begin
SELECT @next_id=@current_date+'000001'
end
else
begin
if substring(str(@current_id),1,8)=@current_date
SELECT @next_id=str(@current_id+1)
else
if substring(str(@current_id),1,8)>@current_date
begin
raiserror 30001 "服务器日期不正确,不能进行数据录入。请与系统管理员联系!!!"
return
end
end;