SQL中游標的使用

2021-10-01 17:43:55 字數 2532 閱讀 8984

一般情況下,我們用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  下一行  prior  上一行  first 第一行

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 for

select 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 '所在州: '+@st

print '--------------------------'

fetch next from auth_cur into @auid,@aulname,@aufname, @st

endclose auth_cur

deallocate auth_cur

declare @id varchar(20),@name varchar(20)

declare  yb_test1 cursor for

select id,name from t1

open yb_test1

fetch next from yb_test1 into @id,@name

while @@fetch_status = 0

begin

select  @id,@name

fetch next from yb_test1 into  @id,@name

endselect @id+@name

close yb_test1

deallocate  yb_test1

declare auth_cur cursor scroll for

select au_id, au_lname, au_fname, state

from authors for update of au_lname

open auth_cur

declare @rowcount int

set @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 動態游標 反映所有資料行的改變 3 僅向前游標 不支援滾動 4 鍵集游標 能反映修改,...