27,581
社区成员
发帖
与我相关
我的任务
分享create proc outStoragePro
@ID varchar(30),
@materiaID varchar(20),
@date datetime,
@operatorID varchar(20),
@count float,
@remark varchar(20),
@message varchar(30) output
as
begin try
if exists(select * from materia where @materiaID=material_ID)--物料表存在此物料
begin
if not exists(select * from in_out_Storage where in_out_Storage_ID=@ID and @materiaID=in_out_Storage_materiaID)--没有主键重复
begin
if exists(select * from materia where @count<=material_amount and @materiaID=material_ID)--库存量足够
begin
begin tran
insert into in_out_Storage
values(@ID,@materiaID,'出仓',@date,@operatorID,@count,@remark)
update materia with(rowlock)
set material_amount=material_amount-@count,material_Outcount=material_Outcount+1
where @materiaID=material_ID
set @message='出仓成功!';--出仓成功
commit tran
return 1
end
else
begin
set @message='物料数量不足!'; --物料数量不足
return 0
end
end
else
begin
set @message='主键重复!'--单号物料号重复
return 0
end
end
else
begin
set @message='物料不存在!'--不存在该物料
return 0
end
end try
begin catch
rollback
set @message='出错了!';--出仓异常
return 0
end catch
begin try
begin tran
... -- 程序处理过程,置于事务中.
commit tran
end try
begin catch
rollback tran -- 一旦出错,回滚事务.
print 'error' -- 打印错误提示
end catch
begin tran
update a with(rowlock) set ss='***' where id="***"
begin tran
update t1 set name='cc' where ID=1 --修改资料
waitfor delay '00:00:05' --延时5秒(模拟事务其他处理过程)
rollback tran --回滚事务(模拟因故取消交易)
select * from t1 with(nolock)