set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Order_Already]
(
@OID int,@ProductAllMoney decimal(10,2),@MID int,@OrderNo varchar(200),@OrderCheck int,
@OrderItemsCount int,
@MA_ID int,@MA_RealName varchar(50),@C_Info text,@C_Addtime datetime,
@C_IntoMemb varchar(255),@C_Type int,@C_Result int,@LC_ID int
)
as
declare @MembMoney decimal(10,2),@HaveCount int
set @MembMoney = (select MembMoney from Member_Tbl where MID=@MID)
set @HaveCount = (select count(1) from OrderItems_Tbl o inner join Inventory_Tbl i on o.PIID=i.PIID where OrderNo=@OrderNo and InveQty>=OIQuantity)
if(@MembMoney>=@ProductAllMoney)
begin
if(@HaveCount=@OrderItemsCount)
begin
begin Transaction T
update Member_Tbl set MembMoney=MembMoney-@ProductAllMoney,MembXFMoney=MembXFMoney+@ProductAllMoney
where MID=@MID
update a set InveQty=InveQty-b.OIQuantity,SellQty=SellQty+b.OIQuantity
from Inventory_Tbl a,(select PIID,OIQuantity from OrderItems_Tbl where OrderNO=@OrderNo) b
where a.PIID=b.PIID
update Orders_Tbl set OrderOutime=getdate(),OrderCheck=@OrderCheck where OID=@OID
insert into LogControls_Tbl(MA_ID,MA_RealName,C_Info,C_Addtime,C_IntoMemb,C_Type,C_Result,LC_ID)
values(@MA_ID,@MA_RealName,@C_Info,@C_Addtime,@C_intoMemb,@C_Type,@C_Result,@LC_ID)
if @@error<>0
begin
rollback transaction T
return 0
end
else
begin
commit transaction T
return 1
end
end
else
return -2
end
else
begin
return -1
end我写了个存储过程,存储过程里面用了事务,然后故意把其中一个表名改错,看会不会回滚,可是表名改错后查询上面那些表就用不了了,还抱错
对象名 'LogControls' 无效。
EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 0,当前计数 = 1。
是不是把表锁住了?
程序执行抱错提示
对象名 'LogControls' 无效。
EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 0,当前计数 = 1。这是什么情况?我只不过是要看下会不会回滚额!
sql知识要好好加强下了!