Oracle 游标for循环

/*
游标的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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值