一般情況下,我們用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 選擇語句相關聯因為游標由結果集 可以是零條 一條或由相關的選擇語句檢索出的多條記錄 和結果集...