程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 什麼是游標

什麼是游標

編輯:SyBase綜合文章
1.游標的概念
游標是指向查詢結果集的一個指針,它是一個通過定義語句與一條Select語句相關聯的一組SQL語句。游標包含兩方面的內容:
●游標結果集:執行其中的Select語句所得到的結果集;
●游標位置:一個指向游標結果集內的某一條記錄的指針
利用游標可以單獨操縱結果集中的每一行。游標在定義以後存在兩種狀態:關閉和打開。當游標關閉時,其查詢結果集不存在;只有當游標打開時,才能按行讀取或修改結果集中的數據。
2.使用游標
一個應用程序可以使用兩種類型的游標:前端(客戶)游標和後端(服務器)游標,它們是兩個不同的概念。
無論使用哪一種游標,都需要經過如下幾個步驟:
●定義游標
●打開游標
●從游標中操作數據
●關閉游標
下面講述的是後端(服務器)游標。
(1)定義游標
在使用游標之前必須聲明它。聲明指定定義游標結果集的查詢。通過使用for update或for read only關鍵詞將游標顯式定義成可更新的或只讀的。
Declare cursor語法為:
For select_statement
[for{read only|update[of colum_name_list]}]
舉例:
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={expression1|NULL|(select_statement)}
[,column_name2={expression2|NULL|(select_statement)}
[……]
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操作。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved