加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle中的cursor

发布时间:2021-01-26 04:14:56 所属栏目:站长百科 来源:网络整理
导读:副标题#e# ? ?游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处


? 说明:该程序中将字段内容垂直排列。V_count变量记录循环次数,即部门个数。?
【训练4】? 已知每个部门有一个经理,编写程序,统计输出部门名称、部门总人数、总工资和部门经理。?
输入并执行如下程序:?

Sql代码?
  1. SET?SERVEROUTPUT?ON? ??
  2. DECLARE??
  3. ?v_deptno?number(8); ??
  4. ?v_count?number(3); ??
  5. ?v_sumsal?number(6); ??
  6. ?v_dname??varchar2(15); ??
  7. v_manager??varchar2(15); ??
  8. ?CURSOR?list_cursor?IS??
  9. ???SELECT?deptno,count(*),sum(sal)?FROM?emp?group?by?deptno; ??
  10. BEGIN??
  11. ??OPEN?list_cursor;? ??
  12. ??DBMS_OUTPUT.PUT_LINE(‘-----------?部?门?统?计?表?-----------‘); ??
  13. DBMS_OUTPUT.PUT_LINE(‘部门名称???总人数??总工资???部门经理‘); ??
  14. ??FETCH?list_cursor?INTO?v_deptno,v_count,v_sumsal;? ??
  15. ??WHILE?list_cursor%found?LOOP?? ??
  16. ?SELECT?dname?INTO?v_dname?FROM?dept ??
  17. ????WHERE?deptno=v_deptno; ??
  18. ????SELECT?ename?INTO?v_manager?FROM?emp? ??
  19. ????WHERE?deptno=v_deptno?and?job=‘MANAGER‘; ??
  20. DBMS_OUTPUT.PUT_LINE(rpad(v_dname,13)||rpad(to_char(v_count),8) ??
  21. ??????||rpad(to_char(v_sumsal),9)||v_manager); ??
  22. ????FETCH?list_cursor?INTO?v_deptno,v_sumsal;? ??
  23. ????END?LOOP; ??
  24. ????????DBMS_OUTPUT.PUT_LINE(‘--------------------------------------‘); ??
  25. ????????CLOSE?list_cursor; ??
  26. ????????END;??


输出结果为:?

Sql代码?
  1. --------------------?部?门?统?计?表?-----------------???
  2. ????????部门名称?????总人数??总工资?????部门经理 ??
  3. ????????ACCOUNTING????3??????8750???????CLARK ??
  4. ????????RESEARCH??????5?????10875???????JONES ??
  5. ????????SALES?????????????6??????9400???????BLAKE ??
  6. ????????-------------------------------------------------------------???
  7. ????????PL/SQL?过程已成功完成。???

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!