0

我希望用户在网站上注册,如果他的电子邮件已经存在,则不应添加他的数据。

现在这是我使用的功能:

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

但即使选择语句返回一个值,它也不会返回 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

将唯一定义为 SQL Server 数据列中的约束。处理相同的异常。

于 2012-09-04T12:47:14.427 回答
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 回答