程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> MS SQL基礎教程:讀取游標中的數據

MS SQL基礎教程:讀取游標中的數據

編輯:關於SqlServer

當游標被成功打開以後,就可以從游標中逐行地讀取數據,以進行相關處理。從游標中讀取數據主要使用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 操作。

當使用MS SQL SERVER 的擴展語法時,必須注意以下約定:

•如果定義了FORWARD-ONLY 或FAST_FORWARD 選項,則只能使用FETCH NEXT命令;

•如果沒有定義DYNAMIC, FORWARD_ONLY 或FAST_FORWARD 選項,而定義了KEYSET, STATIC 或SCROLL 中的任何一個,則可使用所有的FETCH 操作;

•DYNAMIC SCROLL 游標支持所有的FETCH, 選項但禁用ABSOLUTE 選項。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved