ORACLE 的游标

Oracle数据库的存储过程进行循环时,有两种常用的方式

1、静态游标:显示游标

--A、简单显示游标

declare

  cursor cursor_emp is select * from emp;--声明一个游标

  v_emp_record emp%rowtype;

begin

  --打开游标

  open cursor_emp;

  loop

    --提取行到变量

    fetch cursor_emp into v_emp_record;

    --判断是否有数据

    exit when cursor_emp%notfound;

    --显示数据

    dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

  end loop;

  --关闭游标

 

--B、基于游标定义记录变量

declare

  cursor cursor_emp is select * from emp;--声明一个游标

  v_emp_record emp%rowtype;

begin

  --打开游标:如果没有打开

  if not cursor_emp%isopen then

     open cursor_emp;

  end if;

  loop

    --提取行到变量

    fetch cursor_emp into v_emp_record;

    --判断是否有数据

    exit when cursor_emp%notfound;

    --显示数据

    dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

  end loop;

  --关闭游标

  close cursor_emp;

end;

 

--C、带参数显式游标

declare

  cursor cursor_emp(no number) is select * from emp where deptno=no;--声明一个带参数的显示游标

  v_emp_record emp%rowtype;

begin

  --打开游标:如果没有打开

  if not cursor_emp%isopen then

     open cursor_emp(10);

  end if;

  loop

    --提取行到变量

    fetch cursor_emp into v_emp_record;

    --判断是否有数据

    exit when cursor_emp%notfound;

    --显示数据

    dbms_output.put_line('员工编号:'||v_emp_record.empno||',姓名:'||v_emp_record.ename);

  end loop;

  --关闭游标

  close cursor_emp;

end;

 

--D、循环游标

declare

  cursor cursor_emp is select * from emp;

begin

  --for循环

  for i in cursor_emp loop

    dbms_output.put_line('员工编号:'||i.empno||',姓名:'||i.ename);

  end loop;

end;

 

--for循环

declare

  --cursor cursor_emp is select * from emp;

begin

  --for循环:动态游标

  for i in (select * from emp) loop

    dbms_output.put_line('员工编号:' || i.empno || ',姓名:' || i.ename);

  end loop;

end;

 

posted on 2017-03-02 17:08  攻速鞋  阅读(182)  评论(0编辑  收藏  举报

导航