0

ユーザーにWebサイトに登録してもらいたいのですが、彼の電子メールがすでに存在する場合は、彼のデータを追加しないでください。

これが私が使用する関数です。

IF exists( SELECT        SU_ID, SU_Email
           FROM            SystemUser
           WHERE        (SU_Email = @email)
           )
Begin
    return 0
END
else
begin
    return -1
end

ただし、selectステートメントが値を返した場合でも、0は返されず、-1が返されます。私は何を間違っているのですか?

4

4 に答える 4

2

これを試して

DECLARE @FOUND INT
SET @FOUND = (SELECT COUNT(*) AS F FROM SystemUser WHERE (SU_Email = @email))
IF @FOUND > 0 THEN
 RETURN 0
ELSE
 RETURN -1
于 2012-09-04T12:14:28.617 に答える
1

存在しない場合は挿入してみてください

 IF Not exists( SELECT * FROM  SystemUser  WHERE SU_Email = @email)
 Begin
     --Insert statment here
 END
于 2012-09-04T12:12:03.850 に答える
1

関数を書くとき、戻り変数も宣言しますが、それが欠けています。次のコードに従ってください。

Create function CheckUser(@Email @Varchar(50))
RETURNS Bit
DECLARE @ans bit  -- Declare a bit variable

IF exists( SELECT        SU_ID, SU_Email
       FROM            SystemUser
       WHERE        (SU_Email = @email)
       )
    Begin
       set @ans = 1
    END
else
    Begin
       set @ans = 0
    End

RETURNS @ans
于 2012-09-04T12:13:06.870 に答える
1

SQLServerデータ列の制約として一意を定義します。同じの例外を処理します。

于 2012-09-04T12:47:14.427 に答える