有關資料庫中的游標

2021-07-12 03:59:18 字數 2128 閱讀 5928

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

資料庫中的游標

我們知道關聯式資料庫管理系統實質是面向集合的,在ms sql server 中並沒有一種描述表中單一記錄的表達形式,除非使用where 子句來限制只有一條記錄被選中。因此我們必須借助於游標來進行面向單條記錄的資料處理。由此可見,游標允許應用程式對查詢語句select 返回的行結果集中每一行進行相同或...

資料庫游標

資料庫之 游標 轉貼 在資料庫開發過程中,當你檢索的資料只是一條記錄時,你所編寫的事務語句 往往使用select insert 語句。但是我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。1.游標和游標的優點 在資料庫中,游標...

資料庫游標

資料庫游標 2007 10 10 15 40 游標提供了一種對從表中檢索出的資料進行操作的靈活手段,就本質而言,游標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。游標總是與一條t sql 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...