2

私は、最初にレコードが存在するかどうかをチェックするストアドプロシージャを持っています。既に存在する場合は、updates ステートメントを実行します (update ステートメントが正常に機能し、影響を受ける行を返す場合は、値が -1000 の変数を返しません)。それ以外の場合は、値が -2000 の変数を選択します。

問題は、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 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

if exists の代わりに MERGE コマンドを使用してみます。コマンドの簡単な紹介は次のとおりです。 /

于 2012-11-30T20:03:59.377 に答える