存储过程执行的阻塞问题,急!

lishuhai 2004-01-07 09:55:52
存储过程如下:
create procedure dbo.sq_delete_paymoney
@as_zfzt varchar(15), --支付状态
@as_fhzt varchar(15), --订单状态
@as_ddh varchar(30), --订单号
@al_customerid integer, --客户编号
@ade_amt decimal, --变化金额
@al_item int, --来款序号
@as_return char(1) output
as
--来款信息删除处理
begin
declare @error_1 int,@error_2 int,@error_3 int,@error_4 int
begin tran
--删除当前记录
delete sale_pre_accepted_item where item =@al_item and sequ_order=@as_ddh;
select @error_1 = @@error
--更新订单表的状态
update order_simple set zfzt =@as_zfzt,fhzt =@as_fhzt where ddh=@as_ddh;
select @error_3 = @@error
--更新客户表的余额数
update btoc_personal_member set Total_balance = Total_balance - @ade_amt where khbh =@al_customerid;
select @error_4 = @@error
if @error_1 =0 and @error_2 =0 and @error_3 =0 and @error_4 =0
begin --成功
set @as_return ='1'
commit tran
end
else --失败
begin
set @as_return ='0'
rollback tran
end
end
描述:该存储过程用来删除一条记录,同时更新相关表。但每次执行删除操作造成sqlserver 阻塞,如何才能不阻塞,请问如何解决?谢谢!
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_rose 2004-01-08
  • 打赏
  • 举报
回复
需要事务的地方,我只用触发器,不用存储过程。
w_rose 2004-01-08
  • 打赏
  • 举报
回复
从来没用过 SET XACT_ABORT。
从来没用过 begin tran 和 commit tran 。

呵呵,新鲜吗?我很难得见到阻塞的场面。
zjcxc 2004-01-07
  • 打赏
  • 举报
回复
--试试
create procedure dbo.sq_delete_paymoney
@as_zfzt varchar(15), --支付状态
@as_fhzt varchar(15), --订单状态
@as_ddh varchar(30), --订单号
@al_customerid integer, --客户编号
@ade_amt decimal, --变化金额
@al_item int, --来款序号
@as_return char(1) output
as
--来款信息删除处理
declare @err_1 int,@error_2 int,@error_3 int,@error_4 int
SET XACT_ABORT
begin tran
--删除当前记录
delete sale_pre_accepted_item where item =@al_item and sequ_order=@as_ddh;
select @error_1 = @@error
--更新订单表的状态
update order_simple set zfzt =@as_zfzt,fhzt =@as_fhzt where ddh=@as_ddh;
select @error_3 = @@error
--更新客户表的余额数
update btoc_personal_member set Total_balance = Total_balance - @ade_amt where khbh =@al_customerid;
select @error_4 = @@error
if @error_1 =0 and @error_2 =0 and @error_3 =0 and @error_4 =0
begin --成功
set @as_return ='1'
commit tran
end
else --失败
set @as_return ='0'
end
go
newdongkui 2004-01-07
  • 打赏
  • 举报
回复
问题应该不在这个存储过程,请问数据表的触发器/索引什么的情况

@error_2 你没有给赋值啊,永远回滚哦

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧