27.PLSQL中的隐式游标

    xiaoxiao2021-03-25  8

    一、什么是游标

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

    转载请注明原文地址: https://ju.6miu.com/read-156124.html

    最新回复(0)