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

oracle中的cursor

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


执行结果为:?
雇员复制成功!?
PL/SQL 过程已成功完成。?
步骤2:显示复制结果:?
SELECT empno,ename,job FROM emp1;?
执行结果为:?
?

Sql代码?
  1. EMPNO?ENAME??????JOB ??
  2. -------------?--------------?----------------???
  3. ????7788??SCOTT??????ANALYST??


说明:emp_rec变量是根据emp表定义的记录变量,SELECT...INTO...语句将整个记录传给该变量。INSERT语句将整个记录变量插入emp1表,如果插入成功(SQL%FOUND为真),则提交事务,否则回滚撤销事务。试修改雇员编号为7902,重新执行以上程序。?
【训练2】? 输出雇员工资,雇员工资用不同高度的*表示。?
输入并执行以下程序:?

Sql代码?
  1. SET?SERVEROUTPUT?ON? ??
  2. BEGIN??
  3. ?FOR?re?IN?(SELECT?ename,sal?FROM?EMP)??LOOP ??
  4. ??DBMS_OUTPUT.PUT_LINE(rpad(re.ename,12,‘?‘)||rpad(‘*‘,re.sal/100,‘*‘)); ??
  5. ?END?LOOP; ??
  6. END;??


输出结果为:?

Sql代码?
  1. SMITH???????******** ??
  2. ALLEN???????????**************** ??
  3. WARD????????************* ??
  4. JONES???????????****************************** ??
  5. MARTIN??????************* ??
  6. BLAKE???????***************************** ??
  7. CLARK???????????***************************** ??
  8. SCOTT???????????****************************** ??
  9. KING????????????************************************************** ??
  10. TURNER??????*************** ??
  11. ADAMS???????*********** ??
  12. JAMES???????????********** ??
  13. FORD????????????****************************** ??
  14. MILLER??????????************* ??
  15. ?????????执行结果为: ??
  16. ????????PL/SQL?过程已成功完成。??


? 说明:第一个rpad函数产生对齐效果,第二个rpad函数根据工资额产生不同数目的*。该程序采用了隐式的简略游标循环形式。?
【训练3】? 编写程序,格式化输出部门信息。?
输入并执行如下程序:?

Sql代码?
  1. SET?SERVEROUTPUT?ON? ??
  2. ????????DECLARE??
  3. ?????????v_count?number:=0; ??
  4. ?????????CURSOR?dept_cursor?IS?SELECT?*?FROM?dept; ??
  5. ????????BEGIN??
  6. ??????????DBMS_OUTPUT.PUT_LINE(‘部门列表‘); ??
  7. DBMS_OUTPUT.PUT_LINE(‘---------------------------------‘); ??
  8. ?????????FOR?Dept_record?IN?dept_cursor?LOOP??? ??
  9. ?????????DBMS_OUTPUT.PUT_LINE(‘部门编号:‘||?Dept_record.deptno); ??
  10. ?????????DBMS_OUTPUT.PUT_LINE(‘部门名称:‘||?Dept_record.dname); ??
  11. ????????????DBMS_OUTPUT.PUT_LINE(‘所在城市:‘||?Dept_record.loc); ??
  12. DBMS_OUTPUT.PUT_LINE(‘---------------------------------‘); ??
  13. ??????v_count:=?v_count+1; ??
  14. ????????END?LOOP; ??
  15. ?????????DBMS_OUTPUT.PUT_LINE(‘共有‘||to_char(v_count)||‘个部门!‘); ??
  16. ????????END;??


输出结果为:?

Sql代码?
  1. 部门列表 ??
  2. ------------------------------------???
  3. 部门编号:10 ??
  4. 部门名称:ACCOUNTING ??
  5. 所在城市:NEW?YORK ??
  6. ------------------------------------???
  7. 部门编号:20 ??
  8. 部门名称:RESEARCH ??
  9. 所在城市:DALLAS ??
  10. ... ??
  11. 共有4个部门! ??
  12. PL/SQL?过程已成功完成。??

(编辑:晋中站长网)

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

热点阅读