create definer=`root`@`localhost` procedure `fetchdemo`()
begin
declare is1,ic1,isc1,ic2,isc2 int;
declare done int default 0;
declare cur1 cursor for select a.s1,a.c1,a.score,b.c1 ,b.score from sc a join (select * from sc where c1=02) b on a.s1=b.s1 and a.score>b.score where a.c1=01;
declare continue handler for sqlstate '02000' set done = 1; //必須先定義游標,後定義handler
open cur1;
fetch cur1 into is1,ic1,isc1,ic2,isc2 ;
//先fetch一次,在列印。否則先列印,會導致最後乙個記錄列印兩次。
repeat
select is1;
fetch cur1 into is1,ic1,isc1,ic2,isc2 ;
until done end repeat;
close cur1;
end失敗的例子在下面:
repeat
fetch cur1 into is1,ic1,isc1,ic2,isc2 ;//這是失敗的例子,因為先fetch,如果查詢失敗,則還要執行下面的select 語句,會導致最後一條查詢記錄被執行兩次。
select is1;
until done end repeat;
close cur1;
end//ps:昨日喝酒,未日更。遺憾啊,第一天就這樣。
使用游標 引數游標
參游標是指帶有引數的游標。在定義了引數游標之後,當使用不同引數值多次開啟游標時,可以生成不同的結果集。定義引數游標的語法如下 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...
MYSQL使用游標
一 使用游標 一 宣告游標。delare cursor name cursor for select statement 解釋 cursor name是游標的名字 select statement表示select語句。因為游標需要遍歷結果集的每一行,增加了伺服器的負擔,導致游標的效率並不高效,如果使...