第21課 使用遊標
這一課將講授什麼是遊標
,如何使用遊標
。
21.1 遊標
SQL
檢索操作返回一組稱爲結果集
的行,這組返回的行都是與SQL
語句相匹配的行(零行或多行)。
有時,需要在檢索出來的行中前進或後退一行或多行,這就是遊標的用途所在。
遊標cursor
是一個存儲在DBMS
服務器上的數據庫查詢,它不是一條SELECT
語句,而是被該語句檢索出來的結果集。
在存儲了遊標之後,應用程序可以根據需要滾動或瀏覽其中的數據。
遊標選項和特性:
- 能夠標記遊標爲只讀,使數據能讀取,但不能更新和刪除。
- 能控制可以執行的定向操作(向前、向後、第一、最後、絕對位置、相對位置等)。
- 能標記某些列爲可編輯的,某些列爲不可編輯的。
- 規定範圍,使遊標對創建它的特定請求(如存儲過程)或對所有請求可訪問。
- 指示
DBMS
對檢索出的數據,(而不是指出表中活動數據)進行復制,使數據在遊標打開和訪問期間不變化。
遊標主要用於交互式應用,其中用戶需要滾動屏幕上的數據,並對數據進行瀏覽或做出更改。
21.2 使用遊標
使用遊標涉及幾個明確的步驟:
- 在使用遊標前,必須聲明(定義)它。這個過程實際上沒有檢索數據,它只是定義要使用的
SELECT
語句和遊標選項。 - 一旦聲明,就必須打開遊標以供使用。這個過程用前面定義的
SELECT
語句把數據實際檢索出來。 - 對於填有數據的遊標,根據需要取出(檢索)各行。
- 在結束遊標使用時,必須關閉遊標,可能的話,釋放遊標(有賴於具體的
DBMS
)。
聲明遊標後,可根據需要頻繁地打開和關閉遊標。在遊標打開時,可根據需要頻繁地執行取操作。
21.2.1 創建遊標
- 使用
DECLARE
語句創建遊標。 DECLARE
命名遊標,並定義相應的SELECT
語句,根據需要帶WHERE
和其他子句。
21.2.2 使用遊標
- 使用
OPEN CURSOR
語句打開遊標。 - 現在可以用
FETCH
語句訪問遊標數據了。FETCH
指出要檢索哪些行,從何處檢索它們以及將它們放於何處(如變量名)。
21.2.3 關閉遊標
SQL Server
等DBMS
要求明確釋放遊標所佔用的資源。
CLOSE
語句用來關閉遊標。一旦遊標關閉,如果不再次打開,將不能使用。第二次使用它時不需要再聲明,只需要OPEN
打開它即可。