我正在尝试为将用户添加到表中的查询之一编写存储过程。我在成功和失败期间难以捕获返回值。
User 表中的用户名列被定义为具有唯一约束。
这是存储过程的概要。存储过程名称:CreateUser
参数
@用户名 varchar(64)
@firstname varchar(64)
@姓氏 varchar(64)
@MD5Password varchar(64)
@Access_Control 整数
返回标识,如果用户已经存在,则返回 -1 或 (-@@ERROR)(整数)
下面是我编写的存储过程,但我似乎无法捕获返回值部分。
ALTER PROCEDURE [dbo].[CreateUser]
-- Add the parameters for the stored procedure here
@username varchar(64) = NULL,
@firstname varchar(64) = NULL,
@lastname varchar(64) = NULL,
@MD5Password varchar(255) = NULL,
@Access_Control int = -10
AS
DECLARE @return_code int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO [dbo].[User] ([username], [firstname], [lastname], [password], [access_control]) VALUES (@username, @firstname, @lastname, @MD5Password, @Access_Control)
IF(@@ERROR <> 0 )
BEGIN
PRINT N'User with this name already exists. Username must be unique' + @@ERROR
SET @return_code = -1
END
ELSE
BEGIN
SET @return_code = SCOPE_IDENTITY()
END
RETURN @return_code
END
如果成功,我想将返回值设置为 Identity。如果用户已经存在,则为 -1,如果发生某些内部错误,则为某个错误值。如何在存储过程中捕获此行为。提前致谢。