EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 0,当前计数 = 1。
怎么出现在这样的问题??大家帮忙解决
存储过程源码:
ALTER PROCEDURE [dbo].[wan_s_pay]
@uid int, ---用户id
@outid int output ---1为未成功,2为积分不够,3为结算成功,4为万智币不够
AS
BEGIN transaction
declare @allprice money---总价钱
set @allprice =0
declare @alljifen money ---总积分
set @alljifen =0
declare mycursor cursor for select S_cart_prcid from wan_s_marketcart where S_cart_userid=@uid
open mycursor
declare @S_cart_prcid varchar(200)
set @S_cart_prcid =''
fetch next from mycursor into @S_cart_prcid
while @@fetch_status=0
begin
declare @prcjige nvarchar(80)
declare @jifen nvarchar(80)
select @prcjige=s_prc_localPrice ,@jifen=s_prc_integral from wan_s_prc where s_prc_id =@S_cart_prcid
set @alljifen +=@jifen
set @allprice +=@prcjige
fetch next from mycursor into @S_cart_prcid
end
close mycursor
deallocate mycursor
---进行积分查看是否充值
declare @userjifen money --nvarchar(80)
declare @usermoney money--nvarchar(80)
select @userjifen =Upoints ,@usermoney=Uwan from u_uinfor where uId=@uid
if @userjifen<@alljifen
begin
set @outid=2
return
end
if @allprice <@usermoney
begin
set
@outid=4
return
end
if @userjifen>=@alljifen and @allprice >=@usermoney
begin
---进行结算
declare @yumoney nvarchar(50)
declare @yujifen nvarchar(50)
set @yumoney =(@usermoney- @allprice)--万智币余额
set @yujifen =(@userjifen-@alljifen)--积分余额
--更新订单表
update wan_s_marketcart set S_cart_pay=2 where S_cart_userid=@uid
declare @orderid int
set @orderid = (select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':',''))---订单号
declare @M nvarchar(10)
declare @MM nvarchar(10)
set @M=(select cast( floor(rand()*10) as int) )
set @MM =(select CAST(FLOOR(rand()*10) as int))
set @orderid = @orderid+@M+@MM
--添加新数据订单表
insert into wan_user_order(U_or_customid,U_or_type,U_or_jiner,U_or_time,U_or_hao) values(@uid,1,@allprice,GETDATE(),@orderid)
--进行扣除积分和币
update u_uinfor set Upoints=@yujifen,Uwan=@yumoney where uId=@uid
set @outid=3
end
if @@ERROR <>0
begin
set @outid=1
rollback transaction
end
commit transaction