create procedure [pr_posts_Abandoned]
@pid integer,@coins integer,@score integer
As
Declare @tid integer,@author char(200),@isActive integer select @tid=tid,@author=author,@isActive=isDel from zz_posts where pid=@pidif @isActive=1 
   @isActive = -1 * @isActive
else
   @isActive = 1Begin Tran
update zz_posts set isDel=-1*(isDel-1) where pid=@pid
update zz_topic set replies=replies-1*@isactive where id=@tid
update zz_mem set M_postNum=M_postNum-1*@isactive,M_coins=M_coins+@isactive*@coins,M_score=M_score+@isactive*@score where M_name=@author
Commit Tran
Go提示第7行@isActive有错误,大约是这句: @isActive = -1 * @isActive
不可以这样写吗?

解决方案 »

  1.   

    用set
    create procedure [pr_posts_Abandoned] 
    @pid integer,@coins integer,@score integer 
    As 
    Declare @tid integer,@author char(200),@isActive integer select @tid=tid,@author=author,@isActive=isDel from zz_posts where pid=@pid if @isActive=1 
      set @isActive = -1 * @isActive 
    else 
      set @isActive = 1 Begin Tran 
    update zz_posts set isDel=-1*(isDel-1) where pid=@pid 
    update zz_topic set replies=replies-1*@isactive where id=@tid 
    update zz_mem set M_postNum=M_postNum-1*@isactive,M_coins=M_coins+@isactive*@coins,M_score=M_score+@isactive*@score where M_name=@author 
    Commit Tran 
    Go 
      

  2.   

    create procedure [pr_posts_Abandoned] 
    @pid integer,@coins integer,@score integer 
    As 
    Declare @tid integer,@author char(200),@isActive integer select @tid=tid,@author=author,@isActive=isDel from zz_posts where pid=@pid if @isActive=1 
      set @isActive = -1 * @isActive 
    else 
     set  @isActive = 1 Begin Tran 
    update zz_posts set isDel=-1*(isDel-1) where pid=@pid 
    update zz_topic set replies=replies-1*@isactive where id=@tid 
    update zz_mem set M_postNum=M_postNum-1*@isactive,M_coins=M_coins+@isactive*@coins,M_score=M_score+@isactive*@score where M_name=@author 
    Commit Tran 
    Go 
      

  3.   

    問題就不是 @isActive =  -1* @isActive 這裡,而是前面少了個SET罷啦!
      

  4.   

    谢谢,rocklicong,不过结贴了,不好意思,不能给你分了。