oracle 游标 讲解

来源:互联网 发布:java中base64编码 编辑:程序博客网 时间:2024/05/09 11:41
PLSQL 循环游标 cursor 的一点心得体会
编辑 文章分类:数据库
set serveroutput on---------------打印输出信息,默认是FALSE

declare --------------------申明变量,分号结束

v_pages number;
v_numberPerPage number;
v_totalPages number;
v_cur        sys_refcursor;

diy_id  number;
diy_name varchar2(50);
diy_date date;
cursor c_list is select * from  table_User  i where i.id=4;

begin
----------------给变量初始化值
v_pages:=1;
v_numberPerPage:=20;
--调用的sp,参数分别是pages number 要查询的页数,numberPerPage number 每页显示几条  ,tatalPages number 输出参数,返回结果集总页数 , resultCursor cursor 结果集游标,返回查询结果
My_Test_SP(v_pages,v_numberPerPage,v_totalPages,v_cur);



------------第一种循环游标方式,最简单高效
for c in c_list loop
dbms_output.put_line('用户的id='||c.id); -------------输出结果集
end loop;



----------第二种循环游标方式

open v_cur ------打开游标,但是如果有这代码会提示错误,所以我运行的时候是注释这代码的,很奇怪,不知道什么原因
loop
fetch v_cur into diy_id,diy_name,diy_date;-----------这三个参数是My_Test_SP输出的游标参数返回的值,刚好3个字段,如果这里少些任何一个字段,plsql会提示错误,不能少
exit when v_cur%notfound; ----------定义跳出循环的条件,当每页记录则跳出
dbms_output.put_line('报表id='||diy_id||',报表名='||diy_name);--------输出结果
end loop;



close v_cur;---------关闭游标

dbms_output.put_line(v_totalPages);

end;