2024年2月21日发(作者:)

--在数据库里创建一张最大号表

create table maxCount

(

tableID int identity(1,1) primary key,--自增长ID

maxCount varchar(12) not null --最大号

)

--插入一条记录

insert into maxCount values(datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+ '0000 ')

--创建两个存储过程

--这个存储过程用于外部调用 返回一个流水号

create proc serialNumber

@number varchar(12) output

as

exec setMaxCount --调用存储过程setMaxCount

begin transaction

declare @temp decimal

select @number=maxCount from maxCount where tableID=1

set @temp=convert(decimal,@number)+1

set @number=convert(varchar(12),@temp)

update maxCount set maxCount=@number where tableID=1

commit transaction

GO

--用与判定天数是否是第二天如果是跟新最大号表 这个存储过程外部不调用

create proc setMaxCount

as

declare @count varchar(12) ,@nowDay varchar(8),@oldDay varchar(8)

select @count=maxCount from maxCount where tableID=1

set @nowDay=(datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate()))

set @oldDay=(SUBSTRING(@count,0,5)+SUBSTRING(@count,5,2)+SUBSTRING(@count,7,2))

if (@oldDay <@nowDay)

begin

update maxCount set maxCount=datename(yy,getdate())+datename(mm,getdate())+datename(dd,getdate())+ '0000 '

where tableID=1

end

GO

C# 调用代码:

//数据访问类

public class DBManager

{

SqlConnection sqlCon;

public DBManager()

{

sqlCon=new SqlConnection( "server=(local);uid=sa;pwd=;database=HospitalFirst ");

}

///

/// 执行有参存储过程

///

/// 存储过程名

/// 参数数组

public void ExecProcPara(string ProcName,SqlParameter[] sqlParas)

{

if(ProcName==null||ProcName==)

return ;

try

{

if(==)

();

SqlCommand sqlCmd = Command();

dType = Procedure;

dText = ProcName;

//遍历参数数组集合,将每个参数对象与sqlCmd关联

foreach(SqlParameter sqlPara in sqlParas)

{

(sqlPara);

}

eNonQuery();

}

catch

{

return;

}

finally

{

();

}

}

// DAO调用

public string getNumDao()

{

dbm = new DBManager();

SqlParameter[] sqlParas = new SqlParameter[1];

//输出参数

SqlParameter sqlPara0 = new SqlParameter();

terName = "@number ";

ion = ;

ype = r;

= 12;

sqlParas[0] = sqlPara0;

//执行

ocPara( "serialNumber ",sqlParas);

string s = ng();

return s;

}

返回值就是12位流水号