Oracle 游标for循环

来源:互联网 发布:淘宝非凡小筑扒皮 编辑:程序博客网 时间:2024/04/29 13:08
/*游标的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;


0 0
原创粉丝点击