一般情況下,我們用select這些查詢語句時,都是針對的一行記錄而言,
如果要在查詢分析器中對多行記錄(即記錄集)進行讀取操作時,則需要使用到游標或while等迴圈
游標的型別:
1、靜態游標(不檢測資料行的變化)
2、動態游標(反映所有資料行的改變)
3、僅向前游標(不支援滾動)
4、鍵集游標(能反映修改,但不能準確反映插入、刪除)
游標使用順序:
1、定義游標
2、開啟游標
3、使用游標
4、關閉游標
5、釋放游標
transact-sql:
declare 游標名 cursor
[local | global
][forward_only | scroll
][static | keyset | dynamic ][
read_only | scroll_locks
]for selet語句 [
for update[of 列名[,列名]]
注:local 區域性游標 global 全域性游標
forward_only 僅向前 scroll 滾動
static 靜態 keyset 鍵集 dynamic 動態
read_only 唯讀 scroll_locks 鎖定游標當前行
獲取游標的資料
fetch
[[next | prior | first | last |
absolute
]from ] 游標名 [
into 變數]注:
next
last 最後一行 absolute n 第n行
relative n 當前位置開始的第n行
into
變數 把當前行的各字段值賦值給變數
游標狀態變數:
@@fetch_status
游標狀態
0 成功 -
1 失敗 -2丟失
@@cursor_rows
游標中結果集中的行數
n 行數
-1 游標是動態的 0
空集游標
操作游標的當前行:
current
of 游標名
usepubs
godeclare
@auid
char(12),@aulname
varchar(20),@aufname
varchar(20), @st
char(2),@auinfo
varchar(50
)declare auth_cur cursor
forselect
au_id, au_lname, au_fname, state
from
authors
open
auth_cur
fetch
next
from auth_cur into
@auid,@aulname,@aufname, @st
while (@@fetch_status=0
) begin
'作者編號: '+
@auid
'作者姓名: '+
@aulname+'
,'+@aufname
'所在州: '+
@stprint
'--------------------------
'fetch
next
from auth_cur into
@auid,@aulname,@aufname, @st
endclose
auth_cur
deallocate auth_cur
declare auth_cur cursor scroll forselect
au_id, au_lname, au_fname, state
from authors for
update
ofau_lname
open
auth_cur
declare
@rowcount
intset
@rowcount=6
fetch absolute @rowcount
from auth_cur --
將變數@rowcount標識的行設定為當前行
--下面1行是利用游標進行修改操作
update authors set au_lname='張
'where
current
of auth_cur --
修改游標中的當前行
--下面1行是利用游標進行刪除操作
delete
from authors where
current
of auth_cur
SQL中游標的使用
declare studentnum varchar 9 course varchar 10 achievement tinyint,classorder tinyint declare pstudentnum varchar 9 allcourse varchar 60 declare allac...
sql 中游標的使用
declare id int declare addtime datetime declare cursor1 cursor for 定義游標cursor1 select id,addtime from mr examine 使用游標的物件 跟據需要填入select文 open cursor1 開啟...
SQL中游標的使用
一般情況下,我們用select這些查詢語句時,都是針對的一行記錄而言,如果要在查詢分析器中對多行記錄 即記錄集 進行讀取操作時,則需要使用到游標或while等迴圈。游標你是看不到的 游標都包含在物件裡面 比如 儲存過程 游標的型別 1 靜態游標 不檢測資料行的變化 2 動態游標 反映所有資料行的改變...