SQL返回一个整数而不是具有唯一约束的错误消息

时间:2016-05-31 16:06:57

标签: c# sql return

我对表格中的电子邮件字段有唯一约束。 我创建了一个存储过程,如果有错误则返回0,如果没有则返回1.

ALTER procedure [S_User].[P_RegisterUser]
@email varchar(50),
@last_name varchar(50),
@first_name varchar(20),
@password varchar(50),
@birthday datetime
AS
BEGIN
insert into Users (email, last_name, first_name, password, birthday, role_id)
values (@email, @last_name, @first_name,@password, @birthday, 1)

IF @@ERROR <> 0
    RETURN 0
ELSE
    RETURN 1
END

它不返回整数,而是返回错误消息:

Msg 2627, Level 14, State 1, Procedure P_RegisterUser, Line 11
Violation of UNIQUE KEY constraint 'uq_users_email'. Cannot insert duplicate key in object 'dbo.Users'. The duplicate key value is (sir_bonbon@hotmail.com).
The statement has been terminated.

(1 row(s) affected)

在我的C#代码中,它抛出一个异常,因为它没有得到整数而是错误。 如何才能正确返回整数?

感谢。

2 个答案:

答案 0 :(得分:2)

所以看起来你的insert语句抛出异常。 您可以捕获该异常并返回0或1对吗?

添加...

EXCEPTION
    WHEN OTHERS
    THEN
        RETURN 0

- 在END之前。

答案 1 :(得分:1)

您可以在存储过程中使用try catch:see the documentation 你只需要在catch中返回0,在catch块后返回1。

您还可以在代码中处理异常。这对我来说似乎是最好的选择。