前兩天乙個同事大叔問了這樣乙個問題,他要對錶做個類似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...