oracle异常处理代码_oracle中抛出异常什么意思

oracle异常处理代码_oracle中抛出异常什么意思语句执行过程中,由于各种原因使得语句不能正常执行,可能会造成更大错误或整个系统的崩溃,所以PS/SQL提供了异常(exception)着一处理的方法来防止此类情况的发生。在代码运行的过程中无论何时发生

oracle异常处理

语句执行过程中,由于各种原因使得语句不能正常执行,可能会造成更大错误或整个系统的崩溃,所以PS/SQL提供了异常(exception)着一处理的方法来防止此类情况的发生。在代码运行的过程中无论何时发生错误,PL/SQL都能控制程序自动地转向执行异常部分。

1.预定义异常

预定义异常是由于系统产生的。例如出现0除,PL/SQL就会产生一个预定义的ZERO_DIVIDE异常。

--ZERO_DIVIDE异常。使用系统预定义的异常处理,使用该处理后,程序运行时系统就不会提示出现错误。
 
declare
  v_number1 number(3):=10;
  v_number2 number(3):=0;
  v_number3 number(3);
  
  begin
     v_number3:=v_number1/v_number2;
     DBMS_OUTPUT.PUT_LINE(v_number3);
     EXCEPTION
        when ZERO_DIVIDE then
          DBMS_OUTPUT.PUT_LINE("除数不能为0");
  end;
输出结果:DIVIDE ZERO

代码100分

 

2.PL/SQL中常见的异常:

oracle异常处理代码_oracle中抛出异常什么意思

 

 

3.转换的错误处理

代码100分declare
  v_number1 number(3);
  v_char  char(5):="123c";
  begin
     v_number1:=to_number(v_char);  //将字符转换成数字
     DBMS_OUTPUT.PUT_LINE("转换成功");
     EXCEPTION
        when value_error then
          DBMS_OUTPUT.PUT_LINE("转换没成功");
  end;

 

4.联合的错误处理

declare
   v_name  school_students.stu_name%type;
   begin
      select stu_name into v_name
      from school_students
      where stu_id="2016322180021";
      dbms_output.put_line(v_name);
      EXCEPTION
        when  no_data_found then
           dbms_output.put_line("没有数据");
        when  too_many_rows then
           dbms_output.put_line("数据太多");
        when  ZERO_DIVIDE then
           dbms_output.put_line("列出错列");
      
  end;

 

5.用户定义异常

代码100分--用户可以通过自定义异常来处理发生的错误,语法格式为:
exception
   when 异常名 then
        语句块 1;
    when  then
        语句块2;
    [when others then
         语句块3;]
end;

 注意:每个异常处理部分都是由when子句和相应的执行语句组成

 

6.自定义异常

declare
   e_name  exception;
   v_num  number(8);
   begin
      select count(*) into v_num
      from school_students;
     if v_num>10 then
        RAISE  e_name;
     end if ;
     exception
       when e_name then
       dbms_output.put_line("最大值不能超过10");
    end;

注意:同一个异常不允许多个when子句来处理,一个异常对应一个when子句。

 

7.使用others异常

declare
   v_name  school_students.stu_name%type;
   begin
      select stu_name into v_name
      from school_students
      where stu_id="2016322180021";
      dbms_output.put_line(v_name);
      EXCEPTION
        when  OTHERS then
           dbms_output.put_line("出错了");
  end;

对于一个异常有两个处理方式,分别位于不同的when子句,因此系统会认为是不合法的。可以使用others来处理那些不能由其他when子句处理的异常,others异常处理总是位于exception语句的最后。

其实,others异常处理可以借助两个函数来说明捕捉到的异常的类型,这两个函数是PL/SQL和SQLERRM,其中SQLLOCODE是用来说明当前错误的代码,如果是用户自定义异常。则返回1.SQLERRM返回的是当前错误的信息。

 

8.空操作和空值

declare
  n number(3):=-1;
  begin
     if n<0 then
         null;
     else
        DBMS_OUTPUT.PUT_LINE("正常");
     end if;
  end;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7693.html

(0)
上一篇 2023-03-16 09:00
下一篇 2023-03-16

相关推荐

  • Python cmp定义及其常见用法

    Python cmp定义及其常见用法Python内建函数cmp()用于比较两个对象的大小。如果两个对象相等,返回0;如果第一个对象小于第二个对象,返回负数;如果第一个对象大于第二个对象,返回正数。cmp()函数可以用于排序、查找、去重等操作。

    2024-02-18
    43
  • MySQL企业级备份[通俗易懂]

    MySQL企业级备份[通俗易懂][TOC] 1.数据库管理员的两大工作核心 1.1.能够让数据安全得到保护 所谓的数据安全,最容易被人误以为是只有数据丢失,其实还包括数据被脱库、泄密等方面。 1.2.能7 24小时提供服务 数据库具

    2023-03-01
    77
  • Python Numbers:数据类型和算术运算表达式的操作

    Python Numbers:数据类型和算术运算表达式的操作在Python中,支持多种类型的数字,对数字的算术运算表达式也有着多种不同的操作方式。本文将介绍Python中数字数据类型的分类,各类型数字的特点,以及如何进行算术运算表达式的操作。

    2023-12-20
    60
  • select语句的含义_数据库select语句

    select语句的含义_数据库select语句第03章 MySQL基本的SELECT语句 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业

    2023-04-29
    88
  • 使用Python发送邮件

    使用Python发送邮件随着互联网的普及,电子邮件已成为人们日常生活和工作中必不可少的一种通讯方式。Python作为一种高效的编程语言,常被用来处理各种数据。当我们需要通过程序自动发送邮件时,Python便可以发挥出其优势。Python内置的smtplib和email库提供了一种灵活的方式来处理电子邮件,程序可以自动化地发送邮件,从而提高了邮件的发送效率,节约了使用者的时间。

    2024-01-03
    55
  • 基于二进制文件的主从复制

    基于二进制文件的主从复制1.设置主服务器配置 必须在主服务器上启用二进制日志,因为二进制日志是将更改从主服务器复制到从服务器的基础,如果未启用log-bin,则无法进行复制 复制组内的每个服务器必须配置有唯一的id,此id用

    2022-12-29
    99
  • Python下使用os和pipe进行进程间通信

    Python下使用os和pipe进行进程间通信在Python中,我们有多种方法来进行进程间通信,其中最常用的就是使用os模块和pipe管道。这种方法可以用于在父子进程之间实现通信,让它们可以相互传递消息和数据。

    2024-01-07
    55
  • Redis缓存数据库(一)「建议收藏」

    Redis缓存数据库(一)「建议收藏」先导知识:Memcache Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。 已经有了Memcache,为什么还要用Redis呢? 下面Memcache的缺点: 不支持数据持

    2022-12-28
    119

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注