1

我正在尝试为将用户添加到表中的查询之一编写存储过程。我在成功和失败期间难以捕获返回值。

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,如果发生某些内部错误,则为某个错误值。如何在存储过程中捕获此行为。提前致谢。

4

0 回答 0