请教一个关于存储过程的问题??求大神!!!

BeyondQqiang 2012-12-31 05:27:40
这个存储过程的目的只是为了从一张表中检索出id值然后插入到在存储过程中建立的那张表中。没别的意思,就是在学习游标。

这是要检索表的数据:


这个是存储过程代码:
drop table if exists resT;
delimiter $$
drop procedure if exists pro1 $$
create procedure pro1()
begin
declare s int;
declare done boolean default 0;
declare orderbumbers cursor
for
select id from t;
declare continue handler for sqlstate '02000' set done = 1;
create table if not exists test2.resT(id int);
open orderbumbers;
repeat
if not done then
fetch orderbumbers into s;
insert into resT values ( s );
end if;
until done end repeat;
close orderbumbers;
end $$
delimiter ;

call pro1();
select * from rest;


然后这个是从新建表中搜索数据的结果:


相信大家,看到这两个结果就知道问题了。
就是在 rest 表中怎么会检索出两个id位2的值呢??
还有就是请大侠能详细解释下:

declare continue handler for sqlstate '02000' set done = 1;

或者给一篇文章的链接地址。
再次谢谢大家了O(∩_∩)O哈!
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeyondQqiang 2012-12-31
  • 打赏
  • 举报
回复
好吧,谢谢大家了。我了解了。
ACMAIN_CHM 2012-12-31
  • 打赏
  • 举报
回复
drop table if exists resT; delimiter $$ drop procedure if exists pro1 $$ create procedure pro1() begin declare s int; declare done boolean default 0; declare orderbumbers cursor for select id from t; declare continue handler for sqlstate '02000' set done = 1; create table if not exists test2.resT(id int); open orderbumbers; repeat fetch orderbumbers into s; if not done then insert into resT values ( s ); end if; until done end repeat; close orderbumbers; end $$ delimiter ; call pro1();
WWWWA 2012-12-31
  • 打赏
  • 举报
回复
fetch orderbumbers into s; repeat if not done then insert into resT values ( s ); end if; fetch orderbumbers into s; until done end repeat; or fetch orderbumbers into s; while done=0 do ... fetch orderbumbers into s; end while;

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧