美文网首页
PL/SQL光标之光标的属性和光标数的限制

PL/SQL光标之光标的属性和光标数的限制

作者: somertsm | 来源:发表于2017-07-09 10:59 被阅读0次

    光标之光标的属性和光标数的限制

    光标的属性

    属性 描述
    %found 返回TRUE如果一个INSERT,UPDATE或DELETE语句影响了一行或多行或SELECT INTO语句返回一行或多行。否则,它将返回FALSE。
    %notfound 逻辑相反%FOUND。返回TRUE如果一个INSERT,UPDATE或DELETE语句影响没有行或SELECT INTO语句返回任何行。否则,它将返回FALSE。
    %isopen 判断光标是否打开
    %rowcount 返回受INSERT,UPDATE影响的行数,或DELETE语句,或者通过一个SELECT INTO语句返回。

    %isopen属性案例

    SET SERVEROUTPUT ON
    
    DECLARE
     ---定义光标代表给哪些员工涨工资
        cursor cemp is select employee_id,job_title from EMPLOYEES,JOBS where EMPLOYEES.JOB_ID = JOBS.JOB_ID;
        pempno EMPLOYEES.employee_id%type;
        pjob JOBS.JOB_TITLE%TYPE;
        
    BEGIN
        --打开光标
        open cemp;
        
        if cemp%isopen then
         DBMS_OUTPUT.PUT_LINE('光标已经打开');
        else 
         DBMS_OUTPUT.PUT_LINE('光标没有打开');
         
        end if;
        
        --关闭光标
        close cemp;
    end;
    /
    

    %rowcount属性案例

    SET SERVEROUTPUT ON
    
    DECLARE
     ---定义光标代表给哪些员工涨工资
        cursor cemp is select employee_id,job_title from EMPLOYEES,JOBS where EMPLOYEES.JOB_ID = JOBS.JOB_ID;
        pempno EMPLOYEES.employee_id%type;
        pjob JOBS.JOB_TITLE%TYPE;
        
    BEGIN
        --打开光标
        open cemp;
        
        loop
         --取出一条记录
         fetch cemp into pempno,pjob;
         exit when cemp%notfound;
         
         --打印rowcount的值
         dbms_output.put_line('rowcount:'||cemp%rowcount);
         
        end loop;
        
        --关闭光标
        close cemp;
    end;
    /
    

    光标的限制

    默认情况下,oracle数据库只允许在同一个会话中,打开300个光标

    修改光标数的限制:
    alter system set open_corsors=400 scope=both;

    scope 的取值:

    • both:两个都改

    • memory:只更改当前实例,不更改参数文件

    spfile:只更改参数文件(需要重启)

    show parameter cursor;

    查询光标的数量(在SYS中查询修改)

    images

    相关文章

      网友评论

          本文标题:PL/SQL光标之光标的属性和光标数的限制

          本文链接:https://www.haomeiwen.com/subject/zbeshxtx.html