一般情況下,我們用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 鍵集游標 能反映修改,...