错误提示:XXX 的游标已经存在,语句终止 .如何解决啊!
代码如下:
CREATE trigger trg_CounBSoverTotalMoney_Update on Contract
for Update
as
if update(MCubages) or update(OCubages) or update(BSCubages) or update(ReturnCubages) or update(BSoverCubages) or update(Mprice) or update(MpriceChange) or update(Oprice) or update(OpriceChange) or update(BSprice) or update(BSpriceChange) or update(BSpercent) or update(BSpercentPrice) or update(BSpercentPriceChange) or update(ExpiationMoney) or update(MaterialMoney) or update(CheckPrice)
begin
Declare @ContractNo varchar(20),@MVolumn float,@OVolumn float,@BSVolumn float,@RefuseVolumn float ,@BSpercent float,@BSpercentVolumn float,@BSoverVolumn float,@TotalMoney float
Declare Contract_Cursor cursor for select ContractNo, MCubages,OCubages,BSCubages,ReturnCubages,BSpercent,(MCubages+OCubages+BSCubages)*BSpercent,BSoverCubages from inserted
open Contract_Cursor
Fetch next from Contract_Cursor into @ContractNo,@MVolumn,@OVolumn,@BSVolumn,@RefuseVolumn,@BSpercent,@BSpercentVolumn,@BSoverVolumn
while(@@fetch_status = 0)
begin
if @BSVolumn>@BSpercentVolumn
begin
update contract set BSoverCubages=@BSVolumn-@BSpercentVolumn where ContractNo=@ContractNo
end
else
begin
update contract set BSoverCubages=0.0000 where ContractNo=@ContractNo
end
update Contract set MaterialMoney=MCubages*(Mprice+MpriceChange)+OCubages*(Oprice+OpriceChange)+ BSCubages*(BSprice+BSpriceChange)+BSoverCubages*(BSpercentPrice+BSpercentPriceChange)-ReturnCubages*CheckPrice Where ContractNo=@ContractNo
update Contract set TotalMoney=MaterialMoney-ExpiationMoney where ContractNo=@ContractNo
select @TotalMoney= (select TotalMoney from Contract where ContractNo=@ContractNo)
update PaymentInvoice set BalanceMoney=@TotalMoney where ContractNo=@ContractNo
Fetch next from Contract_Cursor into @ContractNo,@MVolumn,@OVolumn,@BSVolumn,@RefuseVolumn,@BSpercent,@BSpercentVolumn,@BSoverVolumn
end
close Contract_Cursor
deallocate Contract_Cursor
end
这该如何解决啊???