SQL中游標的使用

2021-09-06 23:32:11 字數 2515 閱讀 8315

一般情況下,我們用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 游標名

use

pubs

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

print

'作者編號: '+

@auid

print

'作者姓名: '+

@aulname+'

,'+@aufname

print

'所在州: '+

@stprint

'--------------------------

'fetch

next

from auth_cur into

@auid,@aulname,@aufname, @st

endclose

auth_cur

deallocate auth_cur

declare auth_cur cursor scroll for

select

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 動態游標 反映所有資料行的改變...