2012-10-21 113 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

回答