2

我有一个存储过程,它首先检查一些记录是否存在。如果已经存在,则执行更新语句(如果更新语句工作正常,则返回受影响的行,否则返回值为 -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
4

1 回答 1

1

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

于 2012-11-30T20:03:59.377 回答