基础的游标的使用
-- Created on2017-01-03 星期二 by ADMINISTRATOR
declare
--申明游标
cursor mycursor is select * from emp;--list empPO
empInfo emp%rowtype;
begin
--游标操作使用循环,在操作之前需要把游标打开
open mycursor;
--使游标向下一行
fetch mycursor into empInfo;
--判断此行是否有数据被发现
while(mycursor%found) loop
dbms_output.put_line('雇员编号'||empInfo.empno);
-- dbms_output.put_line('雇员姓名'||empInfo.ename);
--修改游标 继续向下
fetch mycursor into empInfo;
end loop;
end;
第二种 代码少一点
-- Created on2017-01-03 星期二 by ADMINISTRATOR
declare
--申明游标
cursor mycursor is select * from emp;--list empPO
empInfo emp%rowtype;
cou number;
begin
--游标操作使用循环,在操作之前需要把游标打开
open mycursor;
loop
--使游标向下一行
fetch mycursor into empInfo;
exit when mycursor%notfound;--无数据时退出
dbms_output.put_line('雇员编号'||empInfo.empno);
end loop;
end;
注意点:
1、 打开游标前,先判断游标是否已经打开
通过isopen判断,格式:游标%ISOPEN
IF mycur%ISOPEN THEN
null ;
ELSE
OPEN mycur ;
END IF ;
2、使用rowcount 对游标所操作的行数进行记录
DECLARE
-- 声明游标
CURSOR mycur IS SELECT * FROM emp ;
empInfo emp%ROWTYPE ;
cou NUMBER ;
BEGIN
-- 游标操作使用循环,但是在操作之前必须先将游标打开
IF mycur%ISOPEN THEN
null ;
ELSE
OPEN mycur ;
END IF ;
LOOP
-- 使游标向下一行
FETCH mycur INTO empInfo ;
EXIT WHEN mycur%NOTFOUND ;
cou := mycur%ROWCOUNT ;
DBMS_OUTPUT.put_line(cou||'雇员编号:'||empInfo.empno) ;
DBMS_OUTPUT.put_line(cou||'雇员姓名:'||empInfo.ename) ;
END LOOP ;
END ;