gpt4 book ai didi

sql - SQL Server 存储过程中的返回值

转载 作者:行者123 更新时间:2023-12-04 11:15:56 25 4
gpt4 key购买 nike

我有一个存储过程,其中包含一个 if 语句。如果计数的行数大于 0,则应设置唯一的输出参数 @UserId到 0

但是它只在查询的第二部分返回一个值。

@EmailAddress varchar(200),
@NickName varchar(100),
@Password varchar(150),
@Sex varchar(50),
@Age int,
@EmailUpdates int,
@UserId int OUTPUT
IF
(SELECT COUNT(UserId) FROM RegUsers WHERE EmailAddress = @EmailAddress) > 0
BEGIN
SET @UserId = 0
END
ELSE
BEGIN
INSERT INTO RegUsers (EmailAddress,NickName,PassWord,Sex,Age,EmailUpdates) VALUES (@EmailAddress,@NickName,@Password,@Sex,@Age,@EmailUpdates)
SELECT SCOPE_IDENTITY()
END

END

最佳答案

您可以执行以下操作之一:

改变:
SET @UserId = 0 到 SELECT @UserId
这将以与 IF 语句的第二部分相同的方式返回值。

或者,看到 @UserId 设置为输出,更改:
SELECT SCOPE_IDENTITY()SET @UserId = SCOPE_IDENTITY()
这取决于您之后希望如何访问数据。如果您希望该值出现在您的结果集中,请使用 SELECT .如果以后要访问@UserId 参数的新值,请使用SET @UserId
看到您接受第二个条件是正确的,您可以编写的查询(无需更改此查询之外的任何内容)是:

@EmailAddress varchar(200),
@NickName varchar(100),
@Password varchar(150),
@Sex varchar(50),
@Age int,
@EmailUpdates int,
@UserId int OUTPUT
IF
(SELECT COUNT(UserId) FROM RegUsers WHERE EmailAddress = @EmailAddress) > 0
BEGIN
SELECT 0
END
ELSE
BEGIN
INSERT INTO RegUsers (EmailAddress,NickName,PassWord,Sex,Age,EmailUpdates) VALUES (@EmailAddress,@NickName,@Password,@Sex,@Age,@EmailUpdates)
SELECT SCOPE_IDENTITY()
END

END

关于sql - SQL Server 存储过程中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com