sql server update插入语句

时间:2012-10-21 19:24:40

标签: asp.net sql-server

我有一个存储过程,首先检查一些记录是否存在。如果已经存在则执行更新语句(如果更新语句正常工作则返回受影响的行,否则返回值为-1000的变量)否则它将选择值为-2000的变量。

问题是如果我在sql server中执行它会正常工作但是当我从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 userinfo_signup.e_mail=@e_mail;
if(@exist>0)
BEGIN
    SET @exist=0;
    SELECT @exist= COUNT ( userinfo_signup.e_mail) from userinfo_signup Where userinfo_signup.e_mail=@e_mail And userinfo_signup.password=@old_pass;
    if(@exist>0)
        Begin
            UPDATE userinfo_signup
            Set password=@new_pass
            Where e_mail=@e_mail AND password=@old_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

1 个答案:

答案 0 :(得分:1)

我会尝试使用MERGE命令而不是if存在。以下是该命令的简单介绍:http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/