學習筆記 游標的使用方法

2021-10-06 11:33:07 字數 2001 閱讀 7436

游標是sql 的一種資料訪問機制。可以將游標簡單的看成是查詢的結果集的乙個指標,可以根據需要在結果集上面來回滾動,瀏覽需要的資料。

靜態游標

靜態游標的結果集,在游標開啟的時候建立在tempdb中,不論你在操作游標的時候,如何運算元據庫,游標中的資料集都不會變。如果想與操作之後的資料一致,則重新關閉開啟游標即可。

動態游標

這個則與靜態游標相對,滾動游標時,動態游標反應結果集中的所有更改。結果集中的行資料值、順序和成員在每次提取時都會變化。所有使用者做的增刪改語句通過游標均可見。如果使用api函式或t-sql where current of子句通過游標進行更新,他們將立即可見。在游標外部所做的更新直到提交時才可見。

只進游標

只進游標不支援滾動,只支援從頭到尾順序提取資料,資料庫執行增刪改,在提取時是可見的,但由於該游標只能進不能向後滾動,所以在行提取後對行做增刪改是不可見的。

鍵集驅動游標

開啟鍵集驅動游標時,該有表中的各個成員身份和順序是固定的。開啟游標時,結果集這些行資料被一組唯一識別符號標識,被標識的列做刪改時,使用者滾動游標是可見的,如果沒被標識的列增該,則不可見,比如insert一條資料,是不可見的,若可見,須關閉重新開啟游標。 靜態游標在滾動時檢測不到表資料變化,但消耗的資源相對很少。動態游標在滾動時能檢測到所有表資料變化,但消耗的資源卻較多。鍵集驅動游標則處於他們中間,所以根據需求建立適合自己的游標,避免資源浪費。

游標允許應用程式對查詢語句select返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作;它還提供對基於游標位置而對錶中資料進行刪除或更新的能力;而且,正是游標把作為面向集合的資料庫管理系統和面向行的程式設計兩者聯絡起來,使兩個資料處理方式能夠進行溝通

游標速度較慢。

宣告游標

開啟游標

讀取游標資料

關閉游標

釋放游標

下面展示一些 `

--根據**設定每本書的等級

--**<50 便宜

-- >=50-100 中等

-- >=100 貴

--定義乙個游標

declare cur_set_lever cursor

for select id,price from books

--開啟游標

open cur_set_lever

--獲取資料 id,price

declare @id int

declare @price decimal(18

,2)fetch next from cur_set_lever

into @id,@price

print @id

--迴圈獲取id

while

(@@fetch_status=0

)begin

--修改等級

if(@price<50)

update books set levels=

'便宜' where id=@id

else

if(@price<

100)

update books set levels=

'中等' where id=@id

else

update books set levels=

'貴' where id=@id

fetch next from cur_set_lever

into @id,@price

end--關閉游標

close cur_set_lever

--釋放游標

deallocate cur_set_lever

Oracle PL SQL游標的使用方法

演示隱式游標,系統自動宣告,自動開啟,自動使用並且自動關閉 begin update emp set sal 1000 dbms output.put line 影響的行數 sql rowcount end rollback 游標的使用方法 第一步 宣告游標 第二步 開啟游標 第三步 使用游標進行迴...

關於游標的初級使用方法

游標 游標是乙個機制,通過這個機制可以給乙個sql語句命名,並操作該 sql返回的資料或者使用該sql返回的資料操作其他的資料 顯式游標 顯式宣告游標,且由 管理游標生命週期 隱式游標 非顯式宣告游標,由系統管理游標生命週期 及有無open,close。loop.end loop declare c...

ORACLE中游標的使用方法

游標被用的最多的是在儲存過程中執行批量修改或是批量刪除操作,比如刪除一條主表記錄之後,可以執行乙個儲存過程刪除該記錄對應的明細記錄。或者修改某張表的某個資料後反寫另一張表的資料。這在erp軟體開發中是經常用到的,例如出庫單實提之後要反寫合同上的實提重量等等,這也要靠好的資料庫設計來支援。下面是乙個o...