SQL会话/连接变量

时间:2011-04-04 07:47:47

标签: sql sql-server tsql

我正在尝试在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。

3 个答案:

答案 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