为选择查询SQL Server 2012的结果设置变量



我正在尝试找到最经济的方法来返回我想要的数据并在同一存储过程中更新另一个表。

我在下面大大简化了我的SQL,以说明我的问题。这是我想要实现的:

DECLARE @UserID INT
SELECT TOP(1) @UserID = UserID, UserName, email, (#Loads of other columns#) FROM Users
UPDATE Logins SET LoggedIn = 1 WHERE UserID = @UserID

我知道我可以通过确保将所有返回的列分配给本地变量来做到这一点,但是有太多有效的sproc。

我不想两次进行选择(一次返回数据,然后设置变量,准备更新语句)

有什么建议吗?谢谢,斯科特

您可以使用OUTPUT将值获取到本地表变量,但您仍然必须使用本地SELECT从表变量获取单个值。

DECLARE @TBL TABLE(userid int, username varchar(50), email varchar(50), logged bit)
DECLARE @userid int
UPDATE TOP (1) Users
SET logged = 1
OUTPUT deleted.* INTO @TBL
SELECT top (1) @userid = userid from @TBL
SELECT @userid

小提琴示例

最新更新