SQL 使用游標進行遍歷

2021-09-22 22:06:36 字數 1116 閱讀 9433

前兩天乙個同事大叔問了這樣乙個問題,他要對錶做個類似foreach的效果,問我怎麼搞,我想了想,就拿游標回答他,當時其實也沒用過資料庫中的游標,但是以前用過ado裡面的,感覺應該差不多。

首先,讓我們先來建張測試表:

use loadtest2010

create table testcursor /*建立測試表*/

( id int,

name varchar(50)

)--插入測試資料

insert into testcursor values(1,'lhc')

insert into testcursor values(2,'jay')

接著,我們使用游標對這張表進行乙個迴圈的操作:

--首先定義臨時儲存資料的變數,以供游標移動時當作temp用

declare @id int

declare @name varchar(50)

declare cursortest cursor for --定義游標

select * from testcursor --定義使用游標的表

open cursortest --開啟游標

fetch next from cursortest into @id,@name --將游標向下移動一行,獲取的資料放入之前定義的變數中

while @@fetch_status=0 --判斷是否成功獲取資料

begin

update testcursor set name=name+'1'

where id=@id --這裡進行相應的處理,可以根據需要填入sql語句

fetch next from cursortest into @id,@name --將游標向下移動一行

end--關閉游標

close cursortest

deallocate cursortest

完成之後,執行一下:

發現我們想要的迴圈效果出現了。。。。嘿嘿~~~

不用游標 遍歷記錄的sql語句

宣告變數表 tb declare tbtable id int,name varchar 50 新增測試資料 insert into tbselect6,aa union allselect7,bb union allselect8,cc union allselect9,dd union alls...

使用游標 引數游標

參游標是指帶有引數的游標。在定義了引數游標之後,當使用不同引數值多次開啟游標時,可以生成不同的結果集。定義引數游標的語法如下 cursor cursor name parameter name datetype is select statement 注意,當定義引數游標時,游標引數只能指定資料型別...

使用游標 游標FOR迴圈

游標for迴圈是在pl sql塊中使用游標最簡單的方式,它簡化了對游標的處理。當使用游標for迴圈時,oracle會隱含的開啟游標,提取游標資料並關閉游標。例子 顯示emp表所有雇員名及其工資 declare cursor emp cursor isselect ename,sal from emp...