27.PLSQL中的隐式游标

一、什么是游标

       简单来理解,在PLSQL中,无论我们查询数据库还是向数据库插入、修改和删除的DML操作,凡是对数据库产生了影响,执行的sql语句都会返回一个由受影响的数据行组成的结果集,而游标就是管理这个结果集的对象。

        Oracle中游标分为两种——隐式游标和显式游标,每个sql语句返回的结果集都会默认受‘SQL’这个隐式游标的管理;而显式游标是我们自定义的游标,用来管理特定的SQL语句返回的结果集。

二、通过隐式游标获取查询到的行数

       假设有下面的emp表:


        如下面的代码,我们在PLSQL的执行块中选中sal大于等于3000的雇员,并打印出共有多少人,就可以通过隐式游标SQL的ROWCOUNT属性来实现。

declare
 type emp_varray is varray(20)of emp%rowtype;
 v_emps emp_varray;
begin
 select * bulk collect intov_emps from emp where sal>=3000;
 dbms_output.put_line('sal不小于3000的人数是:'||SQL%rowcount);
end;
/

结果如下:


       %ROWOUNT是隐形游标的一个属性,除此之外,它还具有以下属性:

序号

属性

描述

1

%FOUND

当执行sql语句返回的结果集不为空时该值为True

2

%ISOPEN

判断游标是否打开,隐形游标中改值恒为False,表示已经打开。

3

%NOTFOUND

和%Found的判断标准正好相反。

4

%ROWCOUNT

返回的数据集的行数。

 

三、DML语句中使用隐形游标

3.1 Insert语句中使用隐形游标

declare
 typeemp_varray is varray(20) of emp%rowtype;
 v_emps emp_varray;
begin
 insert into empvalues(8888,'hyman','clerk',7698,sysdate,3000,200,20);
 ifSQL%found then
   dbms_output.put_line('插入的人数是:'||SQL%rowcount);
 endif;
end;
/

3.2 update 语句中使用隐形游标

declare
 typeemp_varray is varray(20) of emp%rowtype;
 v_emps emp_varray;
begin
 update emp set sal=10000 where empno=8888;
 ifSQL%found then
   dbms_output.put_line('修改的人数是:'||SQL%rowcount);
 endif;
end;
/

3.3 delete 语句中使用隐形游标

declare
 typeemp_varray is varray(20) of emp%rowtype;
 v_emps emp_varray;
begin
 delete from emp where empno=8888;
 ifSQL%found then
   dbms_output.put_line('删除的人数是:'||SQL%rowcount);
 endif;
end;
/




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章