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

oracle中的cursor

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


? 说明:在本训练中,使用RAISE_APPLICATION_ERROR引发自定义异常,并以系统错误的方式进行显示。错误编号为20001和20002。?
注意:同上一个训练比较,此种方法不需要事先定义异常,可直接引发。?
可以参考下面的程序片断将出错信息记录到表中,其中,errors为记录错误信息的表,SQLCODE为发生异常的错误编号,SQLERRM为发生异常的错误信息。?
DECLARE?
? v_error_code????? NUMBER;?
? v_error_message?? VARCHAR2(255);?
BEGIN?
...?
EXCEPTION?
...?
WHEN OTHERS THEN?
??? v_error_code := SQLCODE ;?
??? v_error_message := SQLERRM ;?
??? INSERT INTO errors?
??? VALUES(v_error_code,v_error_message);?
END;?
? 【练习1】修改雇员的工资,通过引发异常控制修改范围在600~6000之间。?
阶段训练?
【训练1】? 将雇员从一个表复制到另一个表。?
步骤1:创建一个结构同EMP表一样的新表EMP1:?
CREATE TABLE emp1 AS SELECT * FROM SCOTT.EMP WHERE 1=2;?
步骤2:通过指定雇员编号,将雇员由EMP表移动到EMP1表:?

Sql代码?
  1. SET?SERVEROUTPUT?ON? ??
  2. DECLARE??
  3. v_empno?NUMBER(5):=7788; ??
  4. emp_rec?emp%ROWTYPE; ??
  5. BEGIN??
  6. ?SELECT?*?INTO?emp_rec?FROM?emp?WHERE?empno=v_empno; ??
  7. ?DELETE?FROM?emp?WHERE?empno=v_empno; ??
  8. INSERT?INTO?emp1?VALUES?emp_rec; ??
  9. ?IF?SQL%FOUND?THEN??
  10. ??COMMIT; ??
  11. ??DBMS_OUTPUT.PUT_LINE(‘雇员复制成功!‘); ??
  12. ?ELSE? ??
  13. ??ROLLBACK; ??
  14. ??DBMS_OUTPUT.PUT_LINE(‘雇员复制失败!‘); ??
  15. ?END?IF; ??
  16. END;??

(编辑:晋中站长网)

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

热点阅读