T-SQL資料類型的細微差別(四)

來源:互聯網
上載者:User
游標變數:
游標變數用來儲存游標定義的一個引用,由變數定義的游標定義為局部游標,在一些命令中可以直接用游標變數來代替游標的引用,如命令OPEN, FETCH, CLOSE及DEALLOCATE游標變數支援所有的T-SQL游標文法,與可修改游標一樣,可以定義為唯讀,游標變數和游標資料類型與普通變數和資料類型使用方式大多數都一樣,只有三點例外:
(1)不可以將表的列定義為游標類型。
(2)不可以把游標定義成預存程序的輸入參數(但是可以定義成輸出參數)
(3)不可以用SELECT語句給游標變數賦值(必須使用SET命令進行賦值)
例如:
DECLARE @cursor CURSOR
SET @cursor = CURSOR FOR SELECT * FROM authors
OPEN @cursor
FETCH @cursor
WHILE (@@FETCH_STATES = 0)
BEGIN
FETCH @cursor
END
CLOSE @cursor
DEALLOCATE @cursor
游標變數還可用已有的游標賦值。
例如:
DECLARE @cursor CURSOR
DECLARE c CURSOR FOR SELECT * FROM authors
SET @cursor  =c
OPEN @cursor
FETCH @cursor
WHILE (@@FETCH_STATES = 0)
BEGIN
FETCH @cursor
END
CLOSE @cursor
DEALLOCATE @cursor
DEALLOCATE c
單獨釋放游標和游標變數,它將仍然在記憶體中,直到直接釋放或者是最後的應用變數超出範圍,兩種條件任何一種都可以完全釋放游標,將一個普通游標賦值給了一個游標變數之後,釋放原始游標並不能禁止通過使用游標變數來繼續訪問。釋放一個游標引用而不是最後一個引用,只能是刪除了通過這種途徑訪問游標的能力,游標本身仍然存在,直到最後一個引用變數被釋放或是超出範圍。

以上內容是《Transact-SQL權威指南》一書的讀書筆記,感謝作者KEN HENDERSON 和 譯者 健蓮科技 中國電力出版社 為我帶來這麼經典的T-SQL書籍。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.