/*
游标的for循环
pl/sql语言提供了游标的for循环语句,【自动执行游标的open,fetch,close语句和循环语句的功能】,当进入循环时,
游标for循环语句自动打开游标,并提取第一行游标的数据,当程序处理完成当前所提取的数据而进入下一次循环时,
游标for循环语句自动提取下一行数据供程序处理,当提取完结果集合中的所有数据行结束循环,并自动关闭游标;
for index_variable in cursor_name[(value[,value]...)] Loop
--游标处理代码
end loop;
其中index_variable为游标for循环语句隐含声明的索引变量,该变量为记录变量,其结构与游标查询语句返回的
的结构集合相同,在程序中可以通过引用索引记录变量元素来读取所提取的游标数据,index_variable中各元素的
名称与游标查询语句选择列表中所制定的列名相同,如果在游标查询语句的选择列表中存在计算列,则必须为这些
计算列指定别名后才能通过游标for循环语句中的索引变量来访问这些列数据;
::不要在程序中对游标进行人工操作,不要在程序中定义用于控制for循环的记录::
*/
declare
cursor c_sal is select emp.empno,emp.ename,emp.sal from emp;
begin
for v_sal in c_sal loop
-- 隐含打开游标:隐含监测c_sal%notfound:隐含关闭游标
dbms_output.put_line(to_char(v_sal.empno)||'....'||v_sal.ename||to_char(v_sal.sal));
end loop;
end;
/*
::当所声明的游标带有参数时候,通过游标for循环语句为游标传递参数::
::可以将游标看做是一个方法,带参数的方法
*/
declare
cursor c_cursor(dept_no number default 10)
is
select dept.dname,dept.loc from dept where dept.deptno <= dept_no;
begin
dbms_output.put_line('当dept_no 的参数为30时:');
for c1_rec in c_cursor(30) loop
dbms_output.put_line(c1_rec.dname||':'||c1_rec.loc);
end loop;
end;
/*
pl/sql 还允许在游标for循环语句中使用子查询来实现游标的功能
*/
declare
begin
for c1_rec in (select dept.dname,dept.loc from dept) loop
dbms_output.put_line(c1_rec.dname||'...'||c1_rec.loc);
end loop;
end;
Oracle 游标for循环
最新推荐文章于 2024-08-16 16:19:07 发布