利用储存过程,生成单号。单号为 年的后两位+加月份+4位数字 如2011年9月 1日 单号为 11090001 ,每一个月都会重新重0001开始!当月就会自增!
代码:
create proc proc_name
@numbers varchar(20) output
as
declare @years varchar(20)
declare @months varchar(20)
declare @maxnumber varchar(20)
declare @tempmonth varchar(10)
set @years=substring(convert(varchar(4), year(getdate())),3,2)
set @months=convert(varchar(3),month(getdate()))
select @maxnumber=max(单号列名) from tablename
if(@maxnumber='')
begin
set @numbers=@years+@months+'0001'
end
else
begin
set @tempmonth=substring(@maxnumber,3,2)---获得当前最大的任务好中的月份
if(len(@months)=1)--给个位数的月份加0
begin
set @months='0'+@months
end
if(@months=@tempmonth)
begin
set @numbers=convert(int,@maxnumber)+1
end
else
begin
set @numbers=@years+@months+'0001'
end
end
GO
调用测试:
declare @aa varchar(30)
exec proc_name @aa output
select @aa
asp.net 前台调用:
string tasknumber ="";
SqlConnection con = new SqlConnection(“数据库链接字符串”);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_name";
SqlParameter param = new SqlParameter("@numbers", SqlDbType.VarChar, 20);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
tasknumber = param.Value.ToString();//获得新得到的任务单号
比较简单呵呵,只是刚刚想发,高手不要鄙视,呵呵有用的可以借鉴一下!