mysql fetch
select * from hoge;
id seq
------------+----------
10 2
11 3
14 9
--
というテーブルがある。
プロシージャ内で
declare cur cursor for select id,seq from hoge where id = _id and seq > 0 order by id asc;
declare continue handler for not found set _norows = true;
と宣言しておいて
新規にデータをinsertする。
insert hoge values( 0, 1 );
_id変数に上で入れたidを代入する
set _id = 0;
open cur;
fetch cur into id, seq;
cur:loop
select * from hoge;
if _norows
then
leave cur;
end if;
fetch next from cur into id, seq;
end loop cur;
とやると
新規に入れたrowを含めたすべてのデータが出ると思われる。
が、leave cur;で一回りもせずに終わってしまう。
これってdeclare宣言時にrowが存在しないためって言うことなのかなあ?
↑のこれは未検証です。
id seq
------------+----------
10 2
11 3
14 9
--
というテーブルがある。
プロシージャ内で
declare cur cursor for select id,seq from hoge where id = _id and seq > 0 order by id asc;
declare continue handler for not found set _norows = true;
と宣言しておいて
新規にデータをinsertする。
insert hoge values( 0, 1 );
_id変数に上で入れたidを代入する
set _id = 0;
open cur;
fetch cur into id, seq;
cur:loop
select * from hoge;
if _norows
then
leave cur;
end if;
fetch next from cur into id, seq;
end loop cur;
とやると
新規に入れたrowを含めたすべてのデータが出ると思われる。
が、leave cur;で一回りもせずに終わってしまう。
これってdeclare宣言時にrowが存在しないためって言うことなのかなあ?
↑のこれは未検証です。
0 件のコメント:
コメントを投稿
登録 コメントの投稿 [Atom]
<< ホーム