0

ストアドプロシージャを使用してデータベースにデータを挿入しようとしましたが、いくつかの条件に従っています。たとえば、データがデータベースに既に存在する場合、ストアド プロシージャは実行されません。私は次のコードを実行していますが、毎回0を返します。私に何ができる

ALTER PROCEDURE dbo.SaveUser
(
  @cid int,
  @firstname varchar(20),
  @lastname varchar(20),
  @dob datetime,
  @gender varchar(20),
  @add varchar(100),
  @email varchar(40),
  @quali varchar(20), 
  @yop varchar(15), 
  @exp varchar(10),
  @pass varchar(20)

)
AS

declare @result int

if  EXISTS( select Email_ID from Registration where Email_ID=@email )
begin
    set @result=4;
    return @result;
end

else
begin
    insert into Registration values(@cid, @firstname, @lastname, @dob, @gender, @add, @email, @quali, @yop, @exp, @pass );
    set @result =0;
    return @result;
 end
4

3 に答える 3

1

このシナリオでは raiseerror イベントを使用できます

if  EXISTS( select Email_ID from Registration where Email_ID=@email )
begin
    RAISERROR(N'Email id already exist.', 10, 2,'')
end

ここで、10 は重大度レベルであり、重大度レベルに従って、SQL Server は情報メッセージまたは例外として識別されます。詳細については

RaiseError

データベース エンジンの重大度レベル

于 2013-09-25T06:14:27.383 に答える
0

これを試してみてください -

ALTER PROCEDURE dbo.SaveUser 
(
    @cid INT,
    @firstname VARCHAR(20),
    @lastname VARCHAR(20),
    @dob DATETIME,
    @gender VARCHAR(20),
    @add VARCHAR(100),
    @email VARCHAR(40),
    @quali VARCHAR(20),
    @yop VARCHAR(15),
    @exp VARCHAR(10),
    @pass VARCHAR(20)
)
AS BEGIN

    IF NOT EXISTS(
        SELECT 1 
        FROM dbo.Registration 
        WHERE Email_ID = @email
    ) BEGIN

        INSERT INTO dbo.Registration
        SELECT @cid, @firstname, @lastname, @dob, @gender, @add, @email, @quali, @yop, @exp, @pass

        RETURN 0;

    END

    RETURN 4;

END
于 2013-09-25T06:11:19.913 に答える