【PL/SQL】学习笔记 (7)光标的属性,一个会话中打开光标数的限制

光标的属性:

1. fetch 语句从光标中是否取到记录

%found    true/flase

%notfound    true/false




2. %isopen 判断光标是否打开

例子:

 1 set SERVEROUTPUT ON
 2 
 3 declare 
 4     --定义光标
 5     cursor cemp is select ename, empjob from emp;
 6     pempno emp.empno%type;
 7     pjob   emp.empjob%type;
 8 begin
 9 
10     --打开光标
11     open cemp;
12     
13     if cemp%isopen then 
14         DBMS_OUTPUT.PUT_LINE('光标已经打开');
15     else 
16         dbms_output.put_line('光标没有打开');
17     end if;
18     
19     --关闭光标
20     close cemp;
21 
22 end;
23 /

结果:




3. rowconut 影响的行数

 1 set SERVEROUTPUT ON
 2 
 3 declare 
 4     --定义光标
 5     cursor cemp is select empno, empjob from emp;
 6     pempno emp.empno%type;
 7     pjob   emp.empjob%type;
 8 begin
 9 
10     --打开光标
11     open cemp;
12     
13     loop 
14         --取出一条记录
15         fetch cemp into pempno,pjob;
16         exit when cemp%notfound;
17         
18         --打印rowcount的值
19         dbms_output.put_line('rowcount:'||cemp%rowcount);
20 
21     end loop;
22     
23     --关闭光标
24     close cemp;
25 
26 end;
27 /

结果:

光标的限制

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

修改光标数的限制:

1 alter system set open_cursors=400 scope =both;
原文地址:https://www.cnblogs.com/CPU-Easy/p/10899581.html