我对表格中的电子邮件字段有唯一约束。 我创建了一个存储过程,如果有错误则返回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#代码中,它抛出一个异常,因为它没有得到整数而是错误。 如何才能正确返回整数?
感谢。
答案 0 :(得分:2)
所以看起来你的insert语句抛出异常。 您可以捕获该异常并返回0或1对吗?
添加...
EXCEPTION
WHEN OTHERS
THEN
RETURN 0
- 在END之前。
答案 1 :(得分:1)
您可以在存储过程中使用try catch:see the documentation 你只需要在catch中返回0,在catch块后返回1。
您还可以在代码中处理异常。这对我来说似乎是最好的选择。