帮我看看这个存储过程问题在哪里
这个是个很简单的存储过程,事实上我只是尝试使用一下游标。
可是事实上这个游标似乎并没有起作用
BEGIN
declare myid int;
declare done int;
--定义游标
DECLARE rs_cursor CURSOR FOR select itemid from relation where userid=1;
--游标走到最后的标志
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
--打开游标
open rs_cursor;
--开始循环
cursor_loop:loop
FETCH rs_cursor into myid;
--如果游标走到了最后,就跳出循环
if done=1 then
leave cursor_loop;
end if;
--打印出游标循环出来的每个itemid
select myid;
end loop cursor_loop;
close rs_cursor;
END
这里我遇到的问题是
我对应于userid=1的这个查询
select itemid from relation where userid=1;在数据库里面可以查出很多条itemid
可是实际上我这个存储过程的select myid;只执行了一次,也就是只查询出一个itemid。
似乎这个游标只执行一次就退出循环了。
我的这个存储过程问题出在哪里呢?请高人指点一下
谢谢啦。
可是事实上这个游标似乎并没有起作用
BEGIN
declare myid int;
declare done int;
--定义游标
DECLARE rs_cursor CURSOR FOR select itemid from relation where userid=1;
--游标走到最后的标志
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
--打开游标
open rs_cursor;
--开始循环
cursor_loop:loop
FETCH rs_cursor into myid;
--如果游标走到了最后,就跳出循环
if done=1 then
leave cursor_loop;
end if;
--打印出游标循环出来的每个itemid
select myid;
end loop cursor_loop;
close rs_cursor;
END
这里我遇到的问题是
我对应于userid=1的这个查询
select itemid from relation where userid=1;在数据库里面可以查出很多条itemid
可是实际上我这个存储过程的select myid;只执行了一次,也就是只查询出一个itemid。
似乎这个游标只执行一次就退出循环了。
我的这个存储过程问题出在哪里呢?请高人指点一下
谢谢啦。
...全文
相关推荐
oracle高级中文帮帮助文档.zip
oracle高级中文帮帮助文档.zip
oracle存储过程编译错误问题
NULL 博文链接:https://forlab.iteye.com/blog/1821751
解决存储过程被锁无法编译的问题
解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题
ORACLE存储过程最全教程
超实用最全的ORACLE教程
MySQL存储过程的权限问题小结
MySQL的存储过程,没错,看起来好生僻的使用场景。问题源于一个开发同学提交了权限申请的工单,需要开通一些权限。 本来是一个很正常的操作,但在我来看是比较着急且紧迫的,说来惭愧,忙着方向规划和开发的事情,这个基础的操作功能竟然给忽略了,所以看到目前的一些实现方式,还是希望能够做一些细小的事情把这些重复性的工作给解放了。 当然我决定把一些基础性的工作接过来,一方面是给同事减压,另一方面是在做一个完整的体验,因为很多需求和痛点通过实践是能够很容易捕捉到重点的,如果我觉得不合理,那么这个过程中势必会有一些改进的地方。比如部署安装,比如权限开通。数据库的权限开通就是一个相对典型的案例,而存储过程的权限


