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

时间:2012-10-24 12:38:32

标签: sql 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。

我不想两次执行SELECT语句(一次返回数据,一次设置变量,为更新语句做好准备)

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

1 个答案:

答案 0 :(得分:1)

您可以使用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

Fiddle Example