游標是一種能從包括多個元素的集合中每次讀取乙個元素的機制
(可以把游標看作乙個指標,把select查詢結果集看作一張二維**,用游標指向**的任意一行,允許使用者對該行資料進行處理)
游標分類:transact-sql游標,api伺服器游標,客戶游標
游標示意圖:
表a表b
游標指向位置——>第一行
————>
第一行第二行
第二行…
…第n行
第n行(1)宣告游標
declare 游標名稱 scroll curson
for secect …
from 表名
where…
(2)開啟游標
open 游標名稱
(3)讀取游標(先將游標指向表的資料讀出來,然後將資料存到指定的變數中)
fetch 讀取資料的位置 form 游標名稱
into 變數名1,變數名2,變數名3,…
指定游標的位置:
游標位置
解釋first
讀取游標中的第一行資料
last
讀取游標中的最後一行資料
prior
讀取游標當前位置的上一行資料
next
讀取游標當前位置的下一行資料
absulute n
讀取游標的第n行資料
pelative n
讀取游標當前位置之前(n為正)或之後(n為負)的的n行資料
(4)關閉游標
close 游標名稱
(5)釋放游標
deallocate 游標名稱 (釋放游標)
(6)游標系統變數與函式
@@cursor_rows返回值說明n
游標已被完全填充,返回n是游標的總行數
0游標未開啟
-1游標為動態游標。
-m游標被非同步填充,返回的-m是鍵集中的當前行數
fetch讀取一行資料的狀態:
@@fetch_status返回值說明0
fetch語句讀取一行資料成功
-1fetch語句讀取一行資料失敗或者此元組不在結果集中
-2被讀取元組不存在
cursor-status確定是否游標或者結果集
@@cursor-status返回值說明1
結果集至少有一行
0結果集為空
-1游標被關閉
-2游標不可用
-3指定游標不存在
– current of 是表示當游標前指標所指的行
close 游標名
deallocate 游標名
刪除當前資料行:
declare from 表名
where current of 游標名
– current of 是表示當游標前指標所指的行
close 游標名
deallocate 游標名
use student
go --宣告游標
declare s_cur scroll cursor
forselect
*from s
forupdate
of sno,sname
go--開啟游標
open s_cur
if @@ error=
0print
'共有'
+convert
(nchar(3
),@@cursor_rows)+
'行學生記錄'
--讀取游標
fetch
next
from s_cur--游標當前位置下一行
declare
@sno
char(10
)declare
@sname
char(10
)declare
@***
char(2
)declare
@birthdate
char(5
)declare
@college
char(10
)fetch absolute 10
from s_cur
into
@sno
,@sname
,@birthdate
,@***
,@college
print
'第十行資料為:學號'
+@sno
+'姓名'
+@sname
+'生日'
+@birthdate
+'性別'
+@***
+'學院'
+@college
update s
set sno=
's111'
,sname=
'kaka'
where
current
of s_cur
close s_cur
deallocate s_cur
go
資料庫游標
資料庫之 游標 轉貼 在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.游標和游標的優點 在資料庫中,游標...
資料庫游標
資料庫游標 2007 10 10 15 40 游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t sql 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...
資料庫游標
1.為何使用游標 使用游標 cursor 的乙個主要的原因就是把集合操作轉換成單個記錄處理方式。用sql語言從資料庫中檢索資料後,結果放在記憶體的一塊區域中,且結果往往是乙個含有多個記錄的集合。游標機制允許使用者在sql server內逐行地訪問這些記錄,按照使用者自己的意願來顯示和處理這些記錄。2...