CURSOR

1.FETCH

create or replace procedure cursor_fetch is 

--declare
--类型定义
cursor c_job is select empno,ename,job,sal from emp where job='MANAGER';
--定义一个游标变量
c_row c_job%rowtype;
begin
open c_job;
loop
--提取一行数据到c_row
fetch c_job into c_row;
--判读是否提取到值,没取到值就退出
--取到值  c_job%notfound 是false
--取不到值c_job%notfound 是true
exit when c_job%notfound;
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
--关闭游标
close c_job;
end;

2.FOR

create or replace procedure cursor_for is
--declare
--类型定义
cursor c_job is select empno,ename,job,sal from emp where job='MANAGER';
--定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
c_row c_job%rowtype;
begin

--隐式打开游标
for c_row in c_job loop
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
end;

3.WHILE

create or replace procedure cursor_while is

---declare

--游标声明

cursor csr_while is select ENAME from EMP ;

--指定行指针
row_loc csr_while%rowtype;
begin
--打开游标
open csr_while;
--给第一行喂数据
fetch csr_while into row_loc;
--测试是否有数据,并执行循环
while csr_while%found loop
dbms_output.put_line('部门名称:'||row_loc.ENAME);
--给下一行喂数据
fetch csr_while into row_loc;
end loop;
close csr_while;
end;

posted @ 2014-04-27 15:02  naw  Views(141)  Comments(0)    收藏  举报