在資料庫中,游標是乙個十分重要的概念。游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t_sql 選擇語句相關聯因為游標由結果集(可以是零條、一條或由相關的選擇語句檢索出的多條記錄)和結果集中指向特定記錄的游標位置組成。當決定對結果集進行處理時,必須宣告乙個指向該結果集的游標。如果曾經用 c 語言寫過對檔案進行處理的程式,那麼游標就像您開啟檔案所得到的檔案控制代碼一樣,只要檔案開啟成功,該檔案控制代碼就可代表該檔案。對於游標而言,其道理是相同的。可見光標能夠實現按與傳統程式讀取平面檔案類似的方式處理來自基礎表的結果集,從而把表中資料以平面檔案的形式呈現給程式。1.游標的概念
●游標結果集:執行其中的select語句所得到的結果集;
●游標位置:乙個指向游標結果集內的某一條記錄的指標
利用游標可以單獨操縱結果集中的每一行。游標在定義以後存在兩種狀態:關閉和開啟。當游標關閉時,其查詢結果集不存在;只有當游標開啟時,才能按行讀取或修改結果集中的資料。
2.使用游標
乙個應用程式可以使用兩種型別的游標:前端(客戶)游標和後端(伺服器)游標,它們是兩個不同的概念。
無論使用哪一種游標,都需要經過如下幾個步驟:
●定義游標
●開啟游標
●從游標中運算元據
●關閉游標
下面講述的是後端(伺服器)游標。
(1)定義游標
declare cursor語法為:
for select_statement
[for]
舉例:declare pubs_crsr cursor
for select pub_name,city,state
from publishers
for update of city,state
(2)開啟游標
open的語法為:
open 游標名
在宣告游標後,必須開啟它以便用fetch,update,delete讀取、修改、刪除行。在開啟乙個游標後,它將被放在游標結果集的首行前,必須用fetch語句訪問該首行。
(3)從游標中讀取資料
在宣告並開啟乙個游標後,可用fetch命令從游標結果集中獲取資料行。
fetch的語法為:
fetch 游標名[into 變數列表]
舉例:fetch pub_crsr into @name,@city,@state
sql server在每次讀取後返回乙個狀態值。可用@@sqlstatus訪問該值,下表給出了可能的@@sqlstatus值及其意義。
值意 義
0fetch語句成功
1fetch語句導致一錯誤
2結果集沒有更多的資料,當前位置位於結果集最後一行,而客戶對該游標仍發出fetch語句時。
若游標是可更新的,可用update和delete語句來更新和刪除行。
刪除游標當前行的語法為:
delete[from]表名
where current of 游標名
舉例:delete from authors where current of authors_crsr
當游標刪除一行後,sql server將游標置於被刪除行的前一行上。
更新游標當前行的語法為:
update 表名
set column_name1=
[,column_name2=
where current of 游標名
舉例:update publishers
set city=」asadena」,state=」ca」
where current of pubs_crsr
(4)關閉游標
當結束乙個游標結果集時,可用close關閉。該語法為:
close 游標名
關閉游標並不改變其定義,可用open再次開啟。若想放棄游標,必須使用deallocate釋放它,deallocater的語法為:
deallocater cursor 游標名
deallocater語句通知sql server釋放declare語句使用的共享記憶體,不再允許另一程序在其上執行open操作。
什麼是資料庫游標?
在資料庫中,游標是乙個十分重要的概念。游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t sql 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集中指向特...
什么是資料庫游標
1.什么是游標?游標,也有人稱為游標。概括的講,它是基於記錄的。過去,關係型資料庫沒有象現在這樣被廣泛的應用。那時候,人們大多使用 dbase 這樣的小型資料庫軟體。這類資料庫確切的說應為資料檔案管理軟體。他們是面向記錄的。不過,這種方式也許更符合人們的習慣。比如,我們在 本中查詢號碼,在學生檔案中...
什么是資料庫游標
1.什么是游標?游標,也有人稱為游標。概括的講,它是基於記錄的。過去,關係型資料庫沒有象現在這樣被廣泛的應用。那時候,人們大多使用 dbase 這樣的小型資料庫軟體。這類資料庫確切的說應為資料檔案管理軟體。他們是面向記錄的。不過,這種方式也許更符合人們的習慣。比如,我們在 本中查詢號碼,在學生檔案中...