探讨下关于游标forloop的问题

vmile925 2009-09-16 09:02:59
declare

cursor cur_info is

select e.*, d.dept_name

from employee e , dept d

where e.dept_no = d.dept_no(+);

v_dept_row cur_info%rowtype;


for v_dept_row in cur_info loop

-- TODO-A

end loop;
--如果在这里 引用v_dept_row变量,变量的值是不是null?
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vber1010 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vmile925 的回复:]
for v_dept_row in cur_info loop

游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当for循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。


[/Quote]
正解!
oraclemch 2009-09-16
  • 打赏
  • 举报
回复
declare     
begin
for v_dept_row in
(
select e.*, d.dname
from emp e , dept d
where e.deptno = d.deptno(+)
) loop
dbms_output.put_line('dept:'||v_dept_row.ename);
end loop;
end;
/


在plsql里面的command窗口模式下执行得到如下结果:

SQL> set serveroutput on
SQL>

dept:SMITH
dept:ALLEN
dept:WARD
dept:JONES
dept:MARTIN
dept:BLAKE
dept:CLARK
dept:SCOTT
dept:KING
dept:TURNER
dept:ADAMS
dept:JAMES
dept:FORD
dept:MILLER

PL/SQL procedure successfully completed

SQL>
oraclemch 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vmile925 的回复:]
for v_dept_row in cur_info loop

游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当for循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。


[/Quote]
你说的是隐式游标吧。
vmile925 2009-09-16
  • 打赏
  • 举报
回复
for v_dept_row in cur_info loop

游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当for循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。

oraclemch 2009-09-16
  • 打赏
  • 举报
回复
你都没有open cursor啊,

估计会报异常错误

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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