欢迎访问热站网,开始您的建站营销之旅!!

您现在的位置: 首页>>建站知识>>数据库

Oracle显示游标的使用及游标for循环

来源:热站网 发布时间:2022-03-09 22:42:36 热度:973 ℃

本篇文章给大家介绍oracle显示游标的使用及游标for循环,当查询返回单行记录时使用隐式游标,查询返回多行记录并逐行进行处理时使用显式游标,对本文感兴趣的朋友一起学习吧

下面给大家介绍在什么情况下用隐式游标,什么情况下用显示游标:

1.查询返回单行记录时→隐式游标;

2.查询返回多行记录并逐行进行处理时→显式游标

--显示游标属性

 

 
  1. declare 

  2. CURSOR cur_emp IS SELECT * FROM emp; 

  3. row_emp cur_emp%ROWTYPE; 

  4. BEGIN 

  5. OPEN cur_emp; 

  6. FETCH cur_emp INTO row_emp; 

  7. WHILE cur_emp%FOUND 

  8. LOOP 

  9. dbms_output.put_line(row_emp.empno||'----'||row_emp.ename); 

  10. FETCH cur_emp INTO row_emp; 

  11. END LOOP; 

  12. close cur_emp; 

  13. END; 

--使用显式游标修改数据(给所有的部门经理加薪1000)

 

 
  1. DECLARE 

  2. CURSOR emp_cur IS 

  3. SELECT empno,ename,sal FROM emp WHERE job='MANAGER' FOR UPDATE; 

  4. emp_row emp_cur%ROWTYPE; 

  5. BEGIN 

  6. OPEN emp_cur; 

  7. LOOP 

  8. FETCH emp_cur INTO emp_row; 

  9. IF emp_cur%NOTFOUND THEN 

  10. EXIT; 

  11. ELSE 

  12. UPDATE emp SET sal=sal+1000 WHERE CURRENT OF emp_cur; 

  13. END IF; 

  14. END LOOP; 

  15. COMMIT; 

  16. CLOSE emp_cur; 

  17. END; 

·注意:

1、如果游标打开之前或关闭之后,使用游标属性,Oracle会抛出一个INVALID_CURSOR错误(ORA-01001);

2、如果在第一次fetch后结果集是空的,%found=false,%NotFound=true,%ROWCOUNT=0;

3、如果使用了BULK COLLECT,那么%ROWCOUNT的值可能不是0或1,实际上他返回的是提取到相关集合的行数。

--游标for循环(给所有的部门经理减薪1000)


本文地址:https://www.rezhanwang.com/shujuku/1300.html

责任编辑:超级管理员
 
QQ在线咨询