PLSQL 循环游标 cursor loop fetch into

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;-----------(

fetch...into...
是SQL 里面获取游标里的量 用到的 fetch 后是你的游标 into 后是你的变量

exit when 是当什么时候退出。后面加条件
是SQL 里面获取游标里的量 用到的 fetch 后是你的游标 into 后是你的变量

exit when 是当什么时候退出。后面加条件

)

 

这三个参数是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;

 

 --fetch 的例子

 

    SET SERVERIUTPUT ON  
    DECLARE  
    v_ename EMP.ENAME%TYPE;  
    v_salary EMP.SAL%TYPE;  
    CURSOR c_emp IS SELECT ename,sal FROM emp;  
    BEGIN  
    OPEN c_emp;  
    FETCH c_emp INTO v_ename,v_salary;  
    DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
    ||'is'|| v_salary);  
    FETCH c_emp INTO v_ename,v_salary;  
    DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
    ||'is'|| v_salary);  
    FETCH c_emp INTO v_ename,v_salary;  
    DBMS_OUTPUT.PUT_LINE('Salary of Employee'|| v_ename  
    ||'is'|| v_salary);  
    CLOSE c_emp;  
    END ;

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值