光標(biāo)之光標(biāo)的屬性和光標(biāo)數(shù)的限制
光標(biāo)的屬性
屬性 | 描述 |
---|---|
%found | 返回TRUE如果一個(gè)INSERT,UPDATE或DELETE語句影響了一行或多行或SELECT INTO語句返回一行或多行。否則,它將返回FALSE。 |
%notfound | 邏輯相反%FOUND。返回TRUE如果一個(gè)INSERT,UPDATE或DELETE語句影響沒有行或SELECT INTO語句返回任何行。否則,它將返回FALSE。 |
%isopen | 判斷光標(biāo)是否打開 |
%rowcount | 返回受INSERT,UPDATE影響的行數(shù),或DELETE語句,或者通過一個(gè)SELECT INTO語句返回。 |
%isopen屬性案例
SET SERVEROUTPUT ON
DECLARE
---定義光標(biāo)代表給哪些員工漲工資
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
--打開光標(biāo)
open cemp;
if cemp%isopen then
DBMS_OUTPUT.PUT_LINE('光標(biāo)已經(jīng)打開');
else
DBMS_OUTPUT.PUT_LINE('光標(biāo)沒有打開');
end if;
--關(guān)閉光標(biāo)
close cemp;
end;
/
%rowcount屬性案例
SET SERVEROUTPUT ON
DECLARE
---定義光標(biāo)代表給哪些員工漲工資
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
--打開光標(biāo)
open cemp;
loop
--取出一條記錄
fetch cemp into pempno,pjob;
exit when cemp%notfound;
--打印rowcount的值
dbms_output.put_line('rowcount:'||cemp%rowcount);
end loop;
--關(guān)閉光標(biāo)
close cemp;
end;
/
光標(biāo)的限制
默認(rèn)情況下,oracle數(shù)據(jù)庫只允許在同一個(gè)會(huì)話中,打開300個(gè)光標(biāo)
修改光標(biāo)數(shù)的限制:
alter system set open_corsors=400 scope=both;
scope 的取值:
both:兩個(gè)都改
memory:只更改當(dāng)前實(shí)例,不更改參數(shù)文件
spfile:只更改參數(shù)文件(需要重啟)
show parameter cursor;
查詢光標(biāo)的數(shù)量(在SYS中查詢修改)
images