遊標的使用可以簡單歸類爲5個步驟:
1.定義遊標
2.打開遊標
3.使用遊標
4.關閉遊標
5.釋放遊標
如下是遊標簡單實用的示例:
--1.定義遊標
DECLARE test_Cursor CURSOR FOR
SELECT ID,NAME FROM TEST
--2.打開遊標
OPEN test_Cursor
--3.使用遊標
DECLARE @ID INT,@NAME VARCHAR
FETCH NEXT FROM test_Cursor INTO @ID,@NAME
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @ID print @Name
FETCH NEXT FROM test_Cursor INTO @ID,@NAME
END
--4.關閉遊標
CLOSE test_Cursor
--5.釋放遊標
DEALLOCATE test_Cursor
遍歷TEST表的每一行,輸出每行的ID 和 NAME。
應用場景:
需要循環從一張表裏取值並判斷作相應的處理,有時候也可以使用臨時表結合while循環來替代遊標操作,實踐證明,遊標的操作更快。
總結:
遊標是邪惡的,遊標是每循環一次返回一條結果集,而SELECT查詢是返回全部的結果集。之前看有網友舉了一個形象生動的例子,遊標就好比你去ATM機取1000塊錢,你每次取100,分10次取出來。所以能不使用遊標儘量不要使用遊標,在我們窮盡了子查詢,while循環,臨時表,表變量,自建函數仍不能實現的時候,使用遊標實現。