`
提烟而过
  • 浏览: 118206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle学习(六)——15天Oracle入门

阅读更多

                          异常处理

--异常处理分为预定义异常处理,非预定义异常处理,和自定义异常处理。

<1>.预定义异常处理

 常见的Oracle已预定好的异常有:

 异常名称                     ORACLE错误             说明
   CURSOR_ALREADY_OPEN            ORA-6511          试图打开一个已打开的光标
   DUP_VAL_ON_INDEX               ORA-0001          试图破坏一个唯一性限制
   INVALID_CURSOR                 ORA-1001          试图使用一个无效的光标
   INVALID_NUMBER                 ORA-1722          试图对非数字值进行数字操作
   LOGIN_DENIED                   ORA-1017          无效的用户名或者口令
   NO_DATA_FOUND                  ORA-1403          查询未找到数据
   NOT_LOGGED_ON                  ORA-1012          还未连接就试图数据库操作
   PROGRAM_ERROR                  ORA-6501          内部错误
   ROWTYPE_MISMATCH               ORA-6504          主变量和光标的类型不兼容
   STORAGE_ERROR                  ORA-6500          内部错误
   TIMEOUT_ON_RESOURCE            ORA-0051          发生超时
   TOO_MANY_ROWS                  ORA-1422          SELECT INTD命令返回的多行
   TRANSACTION_BACKED_OUT         ORA-006           由于死锁提交被退回
   VALUE_ERROR                    ORA-6502          转换或者裁剪错误
   ZERO_DIVIDE                    ORA-1476          试图被零除

 --eg:

   declare

   va number;

   begin

   va:=6;

   dbms_output.put_line(va/0);

   exception

   when zero_divide then  --zero_divide oracle内已经定义好的异常 可直接用.

   dbms_output.put_line('被零整除了!');

   end;

  

<2>.非预定义的异常处理

 

  alter table emp modify --修改表emp使其empno不能为空

  (empno  not null);

 

  declare

  e_nullin exception; --自定义一个异常变量

  pragma exception_init(e_nullin ,-01400);--将异常变量与标准oracle联系起来

  begin

  insert into emp values(null,'huam','kasdk',null,null,3000,600,10);

  exception

  when e_nullin then --利用异常 变量对其进行异常处理

  dbms_output.put_line('你插入的empno值不能为空!');

  end;

  ***预定义异常处理与非预定义异常处理的主要不同点在于 预定义异常中oracle既定义了错误信息

  又定义了错误名称,而预定义异常处理中oracle只定义了错误信息,而没有定义错误名称,在使用

  中还须要我们自已定义错误名称后再与错误信息相连之后才能使用。

 

<3>.自定义的异常处理

 

drop table emp--删除以前使用后的emp

create table emp as select * from SCOTT.emp --emp

 

 alter table emp

 add constraint emp_ck check(sal>500 and sal <10000); --修改emp表使其sal500--10000之间

 

 declare

 e_myexecption exception;--定义一个异常 变量

 pragma exception_init(e_myexecption,-8888);--与自已定义的错误信息连接起来(这里的错误信息是oracal内不存在的)

 aa number:=&sal;--从键盘接收数据

 begin

 if aa>10000 or aa<500 then

 raise e_myexecption;--自定义异常必须要显示的抛出异常

 else

 update emp set sal=aa where empno =7788;

 end if;

 exception --当输入的不在500-10000之间时会异常处理

 when e_myexecption then

 dbms_output.put_line('你输入的工资超出500-10000之间!');

 end;

 

<4>异常函数

 oracle出现异常时我们可以通过sqlcode来取的oracle的错误号,

 利用sqlerrm可以取的错误文本信息 这两个函数在任何异常中都可

 以用,但一般都用在others句子,others子句是异常处理的最后一

 个重要环节。

 --如在上题中当用户输入的不是number类型时若无others句子则要出现异常.修改如下

declare

  va emp.ename%type;

begin

  select ename into va from emp where sal = &aa;

  dbms_output.put_line('雇员名' || va);

exception

  when no_data_found then

    dbms_output.put_line('没有找到数据');

  when others then

    dbms_output.put_line('sqlcode:' || sqlcode || ' sqlerrm' || sqlerrm);

end;

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...

    尚硅谷教学视频

    - **15天精讲精练_Android核心技术**:快速掌握Android开发基础知识,包括UI布局、Activity生命周期、数据存储、网络通信等。 - **Android从入门到实战**:从零开始学习Android开发,最终完成一个完整的项目,巩固所...

    最新尚硅谷全套视频打包地址 包含spring boot cloud 全套 安卓 前端

    1. **20天横扫Java基础**:适合Java初学者,通过20天的学习掌握Java基础语法。 2. **尚硅谷Java基础实战——Bank项目**:通过实际项目加深对Java基础知识的理解和应用。 3. **Oracle、SQL、PLSQL视频教程**:数据库...

    Teach yourself SQL in 21 days.pdf

    通过这21天的学习计划,《在21天内自学SQL》不仅为初学者提供了全面的SQL入门指南,也为有经验的开发者提供了深化技能的机会。无论是为了个人兴趣还是职业发展,这本书都是一个宝贵的资源,旨在帮助读者在有限的时间...

    华为HCNP 8期课程大纲

    - **预约时间:** 考生需要提前至少15天进行考试预约。 **报名条件:** - **个人证件要求:** 参加考试时需携带两种有效的个人证件,例如身份证和驾照、学生证或工作证等。 - **无其他限制:** 华为认证考试报名...

    Teach Yourself SQL in 21 Days

    **Day2:查询入门——SELECT语句** - **SELECT语句**:用于从一个或多个表中检索数据。 - **基本语法**:`SELECT column1, column2 FROM table_name;` - **示例**:`SELECT name, age FROM users;` **Day3:表达式...

Global site tag (gtag.js) - Google Analytics