2011-12-15 78 views
0

我希望Update語句在我的位參數的值爲1時完成。這怎麼能實現?有條件地使用update語句

這是我的存儲過程:

CREATE PROCEDURE sp_subBalance @Cost decimal, @userid int, @bit bit output 
AS 
    declare @SubbedBalance decimal, @Currbalance decimal 

    set @Currbalance = (SELECT User_Balance_tbl.Balance 
         FROM User_Balance_tbl 
         WHERE User_Balance_tbl.UserID = @userid) 

    set @SubbedBalance = (select @Currbalance - @cost) 

    set @bit = (case when @SubbedBalance > 0 Or @SubbedBalance = 0 then 1 else 0 end) 

    case when @bit = 1 then (update User_Balance_tbl 
          set Balance = @SubbedBalance 
          where User_Balance_tbl.UserID = @userid) 
end 

回答

0

它使用如果條件可以通過以下方式完成:

CREATE PROCEDURE sp_subBalance @Cost decimal , @userid int 
,@bit bit output 
AS 

declare @SubbedBalance decimal 
, @Currbalance decimal 

set @Currbalance = 
(
SELECT User_Balance_tbl.Balance 
FROM User_Balance_tbl 
WHERE User_Balance_tbl.UserID = @userid 
) 
set @SubbedBalance = (select @Currbalance - @cost) 
set @bit =(case when @SubbedBalance>0 Or @SubbedBalance=0 then 1 else 0 end) 

IF (@bit=1) 
    BEGIN 
     update User_Balance_tbl set Balance = @SubbedBalance 
     where User_Balance_tbl.UserID = @userid 
    END 
+0

非常感謝,工作正常。 – 2011-12-15 09:45:17

0
If @bit = 1 
begin 
Update ... 
End 

case when @bit = 1

0

你能不能,一旦你確定你的位變量爲1

If @SubbedBalance >= 0 
     Set @bit = 1 
else 
    Set @bit = 0 

if @bit = 1 
begin 
    update User_Balance_tbl 
    set Balance = @SubbedBalance  
    where User_Balance_tbl.UserID = @userid 
end 
+0

感謝您的幫助。 – 2011-12-15 09:46:06