1、在oracle中when others then会吃掉所有的exception,一般不要使用,否则会掩盖软件的错误提示。
2、应使用精准异常捕获。
如果只是判断查不到数据时的处理,应该用when no_data_found then
返回多条数据应该用when too_many_rows then
违反唯一约束应该用when dup_val_on_index then
3、异常处理可以按任意次序排列,但 others 必须放在最后。
4、常见的错误写法
   (1) exception
       when others then
           null;
           end;
      存在问题:无论发生什么错误都会忽略继续向下运行。
    (2)exception
       when others then
            DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
           end;
     存在问题:无论发生什么错误都会忽略继续向下运行。如果执行了set serveroutput on只会在控制台打印SQLCODE||'---'||SQLERRM,调用方看不到任何错误提示。
    (3)exception
       when others then
                po_flag := -1;
           end;
   存在问题:无论发生什么错误,只会把标记赋值为-1,忽略错误继续向下运行。如果需要返回应加return。
    (4)exception
       when others then
                po_flag := -1;
                insert into log...
           end;
   存在问题:调用方收到po_flag=-1后如果执行commit可能会导致事务不一致,如果执行rollback则insert into log...不会起作用。
5、when others then一般用在哪?
(1)判断日期格式合法性,如:
    create or replace function isdate(mydate in varchar2)
         return   varchar2   is
          tmp   date;
       begin
            tmp:=to_date(mydate,'yyyymmdd');
            return   '1';
        exception
               when others then
                         return   '0';
      end   isdate;
(2)自动执行的任务出错后记录日期
        exception
               when others then
                       rollback;
                       pro_logs(sqlcode,sqlerrm,....);   --通过自治事务记录错误日期
                       return;
        end;

在oracle中要谨慎使用when others then(二)相关推荐

  1. ORACLE中分钟用mm和mi 标示区别

    oracle中的日期格式为: 坑之一:HH和HH24 12小时制:yyyy-MM-dd HH:mi:ss 24小时制:yyyy-MM-dd HH24:mi:ss 在java中HH和hh是区分12小时制 ...

  2. Oracle中删除用户和表空间的常见问题(比如:ORA-01940无法删除当前已连接用户的解决方案)

    这时候以管理员身份进入sqlplus命令窗口. 在删除用户的时候有时候会出现以下问题: ORA-01940无法删除当前已连接用户 这时候的解决方案是: 1)查看用户的连接状况 select usern ...

  3. Oracle中的并行

    Oracle中的并行 (一)Oracle中的并行 首先,Oracle会创建一个进程用于协调并行服务进程之间的信息传递,这个协调进程将需要操作的数据集(例如表的数据块)分割成很多部分,称为并行处理单元, ...

  4. oracle 存储过程 状态,查看ORACLE中正在运行的存储过程 | 学步园

    1.如何查看ORACLE中正在运行的存储过程 select owner,name from v$db_object_cache where type like '%PROCE%' and locks ...

  5. oracle自增列问题i,关于oracle中自增列问题

    昨天去面试,面试官文oracle中有没有自增列,平时没留意,今天查了一下资料,做了个例子. oracle中没有自增列,可以设定, 但手写方法.序列或触发器都可以实现,下面是我实现的一种方法 ----- ...

  6. C# 实现Oracle中的数据与Excel之间的转换

    最近项目要求实现数据库之间数据在各个数据库之间导入导出,在此做个笔记 1. 将Oracle中的表导入到Excel中,反之亦然 private static readonly string connec ...

  7. Oracle中Hint深入理解(原创)

    http://czmmiao.iteye.com/blog/1478465 Hint概述  基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明 ...

  8. mysql nextval同步锁_mysql中实现类似oracle中的nextval函数

    我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增. 如       create table table_name(id int auto_increment prima ...

  9. 从oracle中读取图片,Pb从oracle中读取和保存图片

    Pb从oracle中读取和保存图片 (2008-12-12 12:23:20) 转载 分类:编程 标签: it //保存图片 //选择文件 string pname, fname integer va ...

最新文章

  1. Redisson 是如何实现分布式锁的?
  2. Quartz 框架快速入门(三)
  3. 亚马逊封号潮下,卖家们凭借这么做实现自救?速卖通和Lazada成为首选
  4. 五、数据对象和属性类型
  5. 12.14-Linux系统优化
  6. 基于matlab的prony方法实现,基于MATLAB的Prony方法实现
  7. centos可视化打开和修改文件(隐藏文件)
  8. LKT系列加密芯片DES加解密以及OpenSSL DES接口实现加解密
  9. Python 元组拆包
  10. 9个完整android开源app项目
  11. 小程序微信聊天功能中发送emoji表情
  12. QQ第三方登陆-极简版
  13. 实践练习二(必选):手动部署 OceanBase 三副本集群(在同一个节点)
  14. java物流管理系统_基于java的物流管理系统
  15. 如何创造一种团队文化
  16. 在win10基础上安装Ubuntu16.04双系统(双硬盘)
  17. Servlet规范之安全
  18. 炒股配资的杠杆是几倍?
  19. 台式计算机的选购标准,如何选购台式电脑机箱?小白装机选购电脑机箱知识指南(2)...
  20. HDMI上电信号分析

热门文章

  1. WordPress博客里面放谷歌广告代码
  2. xendesktop 打开DDC的Desktop Studio控制台和用户访问Web Interface有时候会非常慢
  3. python面向对象-2
  4. iview DatePicker日期组件禁止选择今天之后的日期 不包括今天
  5. Google Maps 基础
  6. IDEA 2021.1 的 Win 和 Mac 快捷键大全!
  7. 显卡驱动又双叒叕怎么办?
  8. 人体行为姿势识别数据集WISDM实践
  9. VAE中重参数化技巧
  10. 【日语】流行用语[四]