PLSQL中的游标的使用

游标简介:
是一个指向语句执行结果存储地址的指针;
隐式游标
属性:SQL%FOUND:FETCH 语句是否获取到了结果;
SQL%ISOPEN:游标是否处于打开的状态;
SQL%NOTFOUND:FETCH 语句是否没有获取到了结果;
SQL%ROWCOUNT:受语句影响的行数;
eg:
declare
v_sal cmp.sal%type
begin
select sal into v_sal
from emp
where empno=123;

dbms.output.put_line(sql%rowcount||'selected');

if sql%found then
dbms.output.put_line(sql%rowcount||'datafound');
else
dbms.output.put_line(sql%rowcount||'not data found');
end if
end;

显示游标
显示游标的概念
显示游标的操作模型
声明:CURSOR cursor_name[(param type,...)] IS select_statement;
打开游标:OPEN cursor_name[(parameter)];
获取数据:FETCH cursor_name INTO variable;
关闭:CLOSE cursor_name;

eg:(不带参数)
DECLARE
CURSOR cur is select * from emp;
v_row cur%rowtype;
BEGIN
OPEN cur;
FETCH cur into v_row;
EXIT WHEN cur%notfound;
dbms_output.put_line(v_row.ename||':'||v_row.sal);
CLOASE cur;
END;

(带参数):
DECLARE
CURSOR cur(dno number) is select * from emp where deptno=dno;
v_row cur%rowtype;
BEGIN
OPEN cur(10);
LOOP
FETCH cur into v_row;
EXIT WHEN cur%notfound;
dbms_output.put_line(v_row.ename||':'||v_row.sal ||' '|| v_row.deptno);
END LOOP;
CLOASE cur;
END;

(使用for循环)
DECLARE
cursor cur(dno number) is select * from emp where deptno=dno;
BEGIN
for r in cur(10) loop
dbms_output.put_line(r.name||':'||r.sal|| ' '||r.deptno);
end loop;
END;

显示游标的属性:
%FOUND:FETCH 语句是否获取到了结果;
%ISOPEN:游标是否处于打开的状态;
%NOTFOUND:FETCH语句是否没有获取到了结果;
%ROWCOUNT:游标中记录的行数;

 

posted @ 2017-10-25 16:17  惠山脚下小学僧  阅读(153)  评论(0)    收藏  举报