Welcome 微信登录

首页 / 数据库 / MySQL / Oracle PL/SQL基础 游标

Oracle的游标分为显式游戏、隐式游戏,显式游标是指用户自己定义、操作的,用于处理查询返回多行的SELECT查询结果;隐式游标是系统自动进行操作、用于处理DML语句和返回单行数据的SELECT查询。在本文,主要讨论显式游标。一、游标的使用步骤步骤分四步:定义游标、打开游标、检索游标、关闭游标。1、定义游标游标必须在PL/SQL块的声明部分定义。CURSOR cursor_name IS select_statement ;定义游标时,并没有生成seletct_statement(SELECT查询)的数据,当打开游标后,才真正生成数据。2、打开游标OPEN cursor_name ;只有打开游标后,才会从数据库中查询出数据,缓存到内存分配的缓冲区里。3、检索游标FETCH curso_name INTO variable_list ;检索游标的前提是,必须打开了游标,只有打开了游标了,缓冲区才会有数据。
 
游标检索数据,只能下移,不能回退,如:检索了第二条数据又想检索第一条数据,则必须先关闭游标后,再打开游标,才能检索第一条数据。
 
4、关闭游标
 
处理完游标检索出来的数据后,必须关闭游标,才能释放它所占用的系统资源,如所占用的内在缓冲区CLOSE curso_name ;相关阅读:rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题 http://www.linuxidc.com/Linux/2013-07/87890.htmSQLPLUS spool 到动态日志文件名 http://www.linuxidc.com/Linux/2013-03/80988.htmOracle SQLPLUS提示符设置 http://www.linuxidc.com/Linux/2012-10/73326.htm通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度 http://www.linuxidc.com/Linux/2011-07/38711.htm二、游标使用例子declare
  -- declare cursor
  cursor c_dept is
  select * from dept t order by t.deptno;
  v_dept c_dept%rowtype;
begin
  --open cursor c_dept
  open c_dept;
 
  --检索cursor c_dept
  loop
   fetch c_dept into v_dept;
   dbms_output.put_line
   ("deptno:"||v_dept.deptno||",dname:"||v_dept.dname||",loc:"||v_dept.loc);
   exit when c_dept%notfound;
  end loop;
 
  --close cursor
  close c_dept;
end;更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址