游标的属性:found,not found,rowcount,isopen

1.found:找到记录返回true。
2.not found:没找到记录返回true。
3.rowcount:返回更新的行数。
4.isopen:游标是否打开,这个属性由游标的open和close更新。

--通过游标的属性监控游标的状态
declare
  cursor cu_student is
  select * from students;
  student students%rowtype;
begin
  --声明游标后
  if cu_student%isopen then
    dbms_output.put_line('声明游标后,isopen返回true');
  else
    dbms_output.put_line('声明游标后,isopen返回false');
  end if;
  --打开游标后
  open cu_student;
    if cu_student%isopen then
      dbms_output.put_line('打开游标后,isopen返回true');
    else
      dbms_output.put_line('打开游标后,isopen返回false');
    end if;
  --执行fetch后
    fetch cu_student into student;
        dbms_output.put_line('第一次执行fetch,cu_student%rowcount='||cu_student%rowcount);
    if cu_student%found then
       dbms_output.put_line('打开游标后,found返回true');
    else
      dbms_output.put_line('打开游标后,not found返回false');
    end if; 
  --执行循环后
    loop
      if cu_student%found then
        dbms_output.put_line('loop: cu_student%rowcount=' || cu_student%rowcount);
        fetch cu_student into student;
      else
        dbms_output.put_line('loop: found属性');-- || cu_student%found);
        dbms_output.put_line('loop: 循环结束rowcount=' || cu_student%rowcount);
      end if;
      exit;
    end loop;
  close cu_student;
  if cu_student%isopen then
    dbms_output.put_line('关闭游标后,isopen(true)');-- || cu_student%isopen);
  else
    dbms_output.put_line('关闭游标后,isopen(false)');-- || cu_student%isopen);
  end if;
end;
--结果
声明游标后,isopen返回false
打开游标后,isopen返回true
第一次执行fetch,cu_student%rowcount=1
打开游标后,found返回true
loop: cu_student%rowcount=1
关闭游标后,isopen(false)
PL/SQL procedure successfully completed



Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐