27.PLSQL中的隐式游标

来源:互联网 发布:月经 饮食 知乎 编辑:程序博客网 时间:2024/05/16 08:02

一、什么是游标

       简单来理解,在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;/




0 0