當游標被成功打開以後,就可以從游標中逐行地讀取數據,以進行相關處理。從游標中讀取數據主要使用FETCH 命令。其語法規則為:
各參數含義說明如下:
•NEXT
返回結果集中當前行的下一行,並增加當前行數為返回行行數。如果FETCH NEXT是第一次讀取游標中數據,則返回結果集中的是第一行而不是第二行。
•PRIOR
返回結果集中當前行的前一行,並減少當前行數為返回行行數。如果FETCH PRIOR是第一次讀取游標中數據,則無數據記錄返回,並把游標位置設為第一行。
•FIRST
返回游標中第一行。
•LAST
返回游標中的最後一行。
•ABSOLUTE {n | @nvar}
如果n 或@nvar 為正數,則表示從游標中返回的數據行數。如果n 或@nvar 為負數,則返回游標內從最後一行數據算起的第n 或@nvar 行數據。若n 或@nvar 超過游標的數據子集范疇,則@@FETCH_STARS 返回-1, 在該情況下,如果n 或@nvar 為負數,則執行FETCH NEXT 命令會得到第一行數據,如果n 或@nvar為正值,執行FETCH PRIOR 命令則會得到最後一行數據。n 或@nvar 可以是一固定值也可以是一smallint, tinyint 或int 類型的變量。
•RELATIVE {n | @nvar}
若n 或@nvar 為正數,則讀取游標當前位置起向後的第n 或@nvar 行數據;如果n 或@nvar 為負數,則讀取游標當前位置起向前的第n 或@nvar 行數據。若n 或@nvar 超過游標的數據子集范疇,則@@FETCH_STARS 返回-1, 在該情況下,如果n 或@nvar 為負數,則執行FETCH NEXT 命令則會得到第一行數據;如果n 或@nvar 為正值,執行FETCH PRIOR 命令則會得到最後一行數據。n 或@nvar 可以是一固定值也可以是一smallint, tinyint或int 類型的變量。
•INTO @variable_name[,...n]
允許將使用FETCH 命令讀取的數據存放在多個變量中。在變量行中的每個變量必須與游標結果集中相應的列相對應,每一變量的數據類型也要與游標中數據列的數據類型相匹配。
@@FETCH_STATUS 全局變量返回上次執行FETCH 命令的狀態。在每次用FETCH從游標中讀取數據時,都應檢查該變量,以確定上次FETCH 操作是否成功,來決定如何進行下一步處理。@@FETCH_STATUS 變量有三個不同的返回值,如表13-2。
在使用FETCH 命令從游標中讀取數據時,應該注意以下的情況:
當使用SQL-92 語法來聲明一個游標時,沒有選擇SCROLL 選項時,只能使用FETCH NEXT 命令來從游標中讀取數據,即只能從結果集第一行按順序地每次讀取一行,由於不能使用FIRST、 LAST、 PRIOR, 所以無法回滾讀取以前的數據。如果選擇了SCROLL 選項,則可能使用所有的FETCH 操作。