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

oracle中的cursor

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


说明:该程序通过定义游标emp_cursor,提取并显示雇员7788的名称和职务。?
作为对以上例子的改进,在以下训练中采用了记录变量。?
【训练2】? 用游标提取emp表中7788雇员的姓名、职务和工资。?

Sql代码?
  1. SET?SERVEROUTPUT?ON??
  2. ????????DECLARE??
  3. ?????????CURSOR?emp_cursor?IS??SELECT?ename,job,sal?FROM?emp?WHERE?empno=7788; ??
  4. ?????????emp_record?emp_cursor%ROWTYPE; ??
  5. ????????BEGIN??
  6. OPEN?emp_cursor;???? ??
  7. ????????FETCH?emp_cursor?INTO?emp_record; ??
  8. ???????????DBMS_OUTPUT.PUT_LINE(emp_record.ename||‘,‘||?emp_record.job||‘,‘||?emp_record.sal); ??
  9. ?????????CLOSE?emp_cursor; ??
  10. ????????END;??


执行结果为:?

Sql代码?
  1. SCOTT,ANALYST,3000 ??
  2. ????????PL/SQL?过程已成功完成。???


说明:实例中使用记录变量来接收数据,记录变量由游标变量定义,需要出现在游标定义之后。?
注意:可通过以下形式获得记录变量的内容:?
记录变量名.字段名。?
【训练3】? 显示工资最高的前3名雇员的名称和工资。?

Sql代码?
  1. SET?SERVEROUTPUT?ON??
  2. ????????DECLARE??
  3. ?????????V_ename?VARCHAR2(10); ??
  4. ????????V_sal?NUMBER(5); ??
  5. ????????CURSOR?emp_cursor?IS??SELECT?ename,sal?FROM?emp?ORDER?BY?sal?DESC; ??
  6. ????????BEGIN??
  7. ?????????OPEN?emp_cursor; ??
  8. ?????????FOR?I?IN?1..3?LOOP ??
  9. ???????????FETCH?emp_cursor?INTO?v_ename,v_sal; ??
  10. ?????????DBMS_OUTPUT.PUT_LINE(v_ename||‘,‘||v_sal); ??
  11. ??????????END?LOOP; ??
  12. ?????????CLOSE?emp_cursor; ??
  13. ?????????END;??


执行结果为:?

Sql代码?
  1. KING,5000 ??
  2. ?????SCOTT,3000 ??
  3. ?????FORD,3000 ??
  4. ?????PL/SQL?过程已成功完成。??


? 说明:该程序在游标定义中使用了ORDER BY子句进行排序,并使用循环语句来提取多行数据。?
游标循环?
【训练1】? 使用特殊的FOR循环形式显示全部雇员的编号和名称。?

Sql代码?
  1. SET?SERVEROUTPUT?ON??
  2. DECLARE??
  3. ??CURSOR?emp_cursor?IS? ??
  4. ??SELECT?empno,?ename?FROM?emp; ??
  5. BEGIN??
  6. FOR?Emp_record?IN?emp_cursor?LOOP??? ??
  7. ????DBMS_OUTPUT.PUT_LINE(Emp_record.empno||?Emp_record.ename); ??
  8. ????END?LOOP; ??
  9. ????END;??


执行结果为:?

Sql代码?
  1. 7369SMITH ??
  2. 7499ALLEN ??
  3. 7521WARD ??
  4. 7566JONES ??
  5. ?????????PL/SQL?过程已成功完成。??

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

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