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位流水号


发布评论