2011-04-04 64 views
3

我試圖在SQL中找到一些與會話變量等效的內容。我希望能夠存儲和檢索一個數字,但與數據庫的每個連接都有不同的數字。它需要在同一連接上從一個批次持續到下一個批次。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。

回答

5

CONTEXT_INFO屬性可能是你在找什麼 - 它使您能夠設置和讀取連接特定的二進制值。

您可以將您的數值編碼爲二進制值並將其存儲在此屬性中。

0

的臨時表生存批處理(包括go)。它仍然是連接特定的:

create table #temp (val float) 
insert #temp values (3.14) 
go 
select * from #temp 
+0

我認爲這是行得通的,但事實證明臨時表不能在視圖中使用。它也有一些奇怪的作用域屬性,意味着我不能在存儲過程中創建它,然後在另一箇中讀取它,但我可以將它設置在存儲過程之外,然後在一個存儲過程中讀取它。 – liserdarts 2011-04-04 22:18:53