我正在尝试在SQL中找到一些与会话变量等效的东西。我希望能够存储和检索一个数字,但每个与数据库的连接都有不同的数字。它需要在同一个连接上从一个批处理到下一个批处理。
我确实有一个使用像这样的全局游标的解决方案。
IF (SELECT CURSOR_STATUS('global','ChangeSet')) >= 0
BEGIN --Close and deallocate the cursor
Close ChangeSet
DEALLOCATE ChangeSet
END
--Create a new cursor
DECLARE ChangeSet CURSOR GLOBAL STATIC FOR
SELECT ChangeSet = @ChangeSet
--Open the cursor
OPEN ChangeSet
每个连接都有一个不同的游标,因此它可以工作,但这在视图中是不可用的。我想如果有人能告诉我如何在一个看起来很酷的视图中阅读它。
我正在使用MS SQL Server btw。
答案 0 :(得分:6)
CONTEXT_INFO
属性可能是您正在寻找的 - 它使您能够设置和读取特定于连接的二进制值。
您可以将数值编码为二进制并将其存储在此属性中。
答案 1 :(得分:0)
临时表在批处理中存活(包括go
)。它仍然是特定于连接的:
create table #temp (val float)
insert #temp values (3.14)
go
select * from #temp
答案 2 :(得分:0)
从 SQL 2016 开始
adist