2012-10-21 116 views
2

我有一個存儲過程,首先檢查某些記錄是否存在。如果已經存在,則執行更新語句(如果update語句正常工作,則返回受影響的行,否則返回具有-1000值的變量)否則,它會選擇值爲-2000的變量。SQL服務器更新插入語句

問題是它工作正常,如果我在sql服務器執行它,但是當我從C#調用它然後它返回current_indent('')或只有-1沒有-1000或-2000返回。

USE [youfuntube] 
    GO 
    ALTER PROCEDURE [dbo].[usp_change_pass]  
    @e_mail varchar(60), 
@old_pass varchar(27), 
@new_pass varchar(27) 
    AS 
    BEGIN 
declare @exist int; 
Set @exist =0; 

Select @exist=COUNT(userinfo_signup.e_mail) from userinfo_signup where [email protected]_mail; 
if(@exist>0) 
BEGIN 
    SET @exist=0; 
    SELECT @exist= COUNT (userinfo_signup.e_mail) from userinfo_signup Where [email protected]_mail And [email protected]_pass; 
    if(@exist>0) 
     Begin 
      UPDATE userinfo_signup 
      Set [email protected]_pass 
      Where [email protected]_mail AND [email protected]_pass; 
      Select IDENT_CURRENT('userinfo_signup'); 
     End 
    ELSE 
     begin 
      Set @exist=-1000; 
      SELECT @exist; 
     end 
    END 
ELSE 
    BEGIN 
     SET @exist=-2000; 
     Select @exist; 
END 
    END 
    GO 
+2

也許你可以添加你的C#代碼,因爲你的問題發生在那裏? –

+2

YOu需要注意:你不是**返回** @ exists作爲返回參數(帶有'RETURN @ exists'語句);而是將其選擇到輸出結果集。這取決於你如何從你的C#代碼中獲取返回數據(與結果集)...... –

+0

如果用戶正在更改密碼,用戶是否已經登錄,那麼用戶已經存在。看來你的邏輯可以簡化。也同意,看着C#代碼會有所幫助 – rjsteward

回答