oracle异常处理

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

CREATE OR REPLACE PACKAGE BODY TEST_PACKAGE IS
--异常分为:编译是错误(语法错误)、运行时错误(编译器无法检查,对应某些情况程序是可以正常执行的,但在某些特点情况下程序不会正确执行)
--内置异常:oracle中把一些常见的运行时错误预定义为异常一个ora-xxxx表示一种错误。如:ora-01476表示zero_divide错误。内置异常是隐式抛出的,当发生
--           特定错误是,与该错误相关的内置异常就会抛出。
  PROCEDURE TEST_001 is
  begin
    TEST_002;
    EXCEPTION
        when value_error or invalid_number then
             dbms_output.put_line('2种异常中一种'||SQLERRM);
       WHEN OTHERS THEN
        dbms_output.put_line('error'||SQLERRM);
  end TEST_001;

  PROCEDURE TEST_002 is
    custTelephoneId nbz_cust_telephone.id_nbz_cust_telephone%type;
    begin
    SELECT SYS_GUID() into custTelephoneId FROM DUAL;
    insert into nbz_cust_telephone
      (id_nbz_cust_telephone,
       tele_type_code,
       id_nbz_customer,
       tele_num,
       is_current_dailed,
       is_default_contact)
    values
      (null,
       null,
       null,
       null,
       null,
       null);
       commit;
  end TEST_002;
  /*
  *  如果语句块中定义一个异常,该异常是本语句块专用的,但是该异常适用于该语句块包含的任何语句块。(在语句块嵌套的情况下,外包语句块定义的任何异常读适用于内部语句块)
  *  no_data_found异常适用于inner block当然也适用于outer block.而value_error异常只适用于inner block.这种内部异常传递给外部处理的过程叫异常传播。
  */
  PROCEDURE TEST_003 is
  v_status_code nbz_task.task_status_code%type;
  v_count number(10);
  --outer block
  begin
    select nt.task_status_code into v_status_code from nbz_task nt where nt.id_nbz_task='100254236';
    --inner block
    begin
          select 0 into v_count from nbz_task nt where nt.id_nbz_batch='I_20090212_0004'; --这个语句可能出现no_data_found异常
    exception
         when value_error or invalid_number or too_many_rows then
             dbms_output.put_line('3种异常中一种'||SQLERRM);
    end;
    EXCEPTION
       WHEN no_data_found THEN
        dbms_output.put_line('error'||SQLERRM);
  end TEST_003;
  /*
  *  自定义异常
  * 
  */
  PROCEDURE TEST_004 is
  v_count number(10) :=0;
  my_exception exception;
  begin
    select count(*) into v_count from nbz_task nt where nt.id_nbz_batch='I_20090212_0004';
    if v_count=0 then
       raise my_exception;--自定义异常要显示抛出。内置异常会隐式抛出的。
    end if;
    EXCEPTION
       WHEN my_exception THEN
        dbms_output.put_line('error'||SQLERRM);
  end TEST_004;
   /*
  *  声明部分的异常不会被处理
  *  需要把
  */
  PROCEDURE TEST_005 is
  begin
   declare--需要嵌套
   v_test_var char(3):='ABCDE';
    begin
      dbms_output.put_line('进来了...'||v_test_var);
      EXCEPTION
          WHEN invalid_number or value_error THEN
          dbms_output.put_line('error'||SQLERRM);--此处不会被处理。尽管在v_test_var定义部分会抛出value_error异常,但不会被这里处理
    end;
  EXCEPTION
          WHEN invalid_number or value_error THEN
          dbms_output.put_line('error'||SQLERRM);--在此处处理。 
  end TEST_005;

END TEST_PACKAGE;

转载于:https://my.oschina.net/u/729507/blog/76979

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS程序内发短信

2019独角兽企业重金招聘Python工程师标准>>> iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UIFramework Reference 一些笔记: MFMes…

JQUERY学习第二天之制作横纵向导航菜单

$(document).ready(function(){ //页面中的DOM已经装载完成时,执行的代码 $(".main > a").click(function(){ //找到主菜单项对应的子菜单项 var ulNode $(this).next("ul"); /* if (ulNode.css("display") "none"…

任何项目都适用的CMakeLists配置

声明下&#xff1a;本人想把CMakeLists中的内容写好,csdn格式化了&#xff0c;无能为力&#xff0c;以下是本人在生产环境中已经使用过了。 测试代码: #include int main() { //不支持linux //#ifndef _DEBUG #ifndef DEBUG std::cout << “release” << std::end…

深入 Apache Kylin Cube 与查询优化

2019独角兽企业重金招聘Python工程师标准>>> 近几年&#xff0c;Apache Kylin作为一个高速的开源分布式大数据查询引擎正在迅速崛起。它充分发挥Hadoop、Spark、HBase等技术的优势&#xff0c;通过对超大规模数据集进行预计算&#xff0c;实现秒级甚至亚秒级的查询响…

Centos搭建SVN服务器及配置文件

2019独角兽企业重金招聘Python工程师标准>>> 1、安装 #yum install subversion 判断是否安装成功 yum安装结束时会显示版本 svnserve, version 1.6.11 (r934486) 出现上面的提示&#xff0c;说明安装成功。 有了SVN软件后还需要建立SVN库。 #mkdir /opt/svn/repos …

IP地址查询接口及调用方法

为什么80%的码农都做不了架构师&#xff1f;>>> 设计蜂巢IP地址查询接口&#xff1a;http://www.hujuntao.com/api/ip/ip.php腾讯IP地址查询接口&#xff1a;http://fw.qq.com/ipaddress新浪IP地址查询接口&#xff1a;http://int.dpool.sina.com.cn/iplookup/iplo…

加解密技术(Cryptography)基本概念

转载自&#xff1a;http://www.cnblogs.com/piyeyong/archive/2010/06/10/1744692.html 要想实现在不安全的网络上的安全通信&#xff0c;需要考虑3个方面的问题&#xff1a;保密(Privacy)&#xff0c;认证(Authentication)&#xff0c;完整性(Integrity)。 1.保密(Privacy) 数…

.NET配置文件读写实例(附SosoftConfigHelper类)

配置文件在软件开发中起到举足轻重的作用&#xff0c;可以说不可或缺。.NET程序可使用.config文件作为配置文件&#xff0c;例如WinForm程序的*.app.config、Web程序的web.config。.config文件是标准的XML文件。本实例可读取、修改和添加app.confing或者web.config文件的appSet…

【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...

一、错误内容 今天用phpmyadmin连接mysql里面的某个数据库时时遇到了下面的提示&#xff1a; #1045 - Access denied for user rootlocalhost (using password: NO) phpMyAdmin 试图连接到 MySQL 服务器&#xff0c;但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户…

H3C 帧中继初级配置(二)

配置思路&#xff1a; 1、先配置FR-SWITCH 2、再配置RTA、RTB、RTC FR-SWITCH详细配置步骤如下&#xff1a; [FR-Switch]fr switching //启动路由器帧中继功能 [FR-Switch]interface s6/0 [FR-Switch-Serial6/0]link-protocol fr //链路协议封闭为FR [FR-Switch-Serial6/0]fr…

Java并发同步器AQS(AbstractQueuedSynchronizer)学习笔记(2)

2019独角兽企业重金招聘Python工程师标准>>> 学习了AbstractQueuedSynchronizer 之后(Condition没有在上文做笔记&#xff0c;当应该不难理解)&#xff0c;接下来笔者就尝试着分析在JUC包中的各个同步器&#xff0c;其语义是如何实现的。 ReentrantLock 内部类Sync继…

Ural 1627 Join(生成树计数)

http://acm.timus.ru/problem.aspx?space1&num1627 生成树计数的题&#xff0c;直接用Matrix-Tree定理就可以解决问题了。 代码如下&#xff1a; View Code 1 #include <cstdio>2 #include <cstring>3 #include <algorithm>4 5 using namespace std;6 …

Navicat for MySQL工具创建mysql数据库定时器

步骤1&#xff1a; 步骤二&#xff1a; 效果图:

魔兽争霸3地图(WarIII Maps):三国猛兽传

魔兽争霸3地图&#xff08;WarIII Maps&#xff09;&#xff1a;三国猛兽传三国猛兽传三国时期&#xff0c;连年战乱&#xff0c;天降异象&#xff0c;所有战力无双的英雄&#xff0c;外表全都变成了凶悍的猛兽…………其貌虽毁&#xff0c;其心不改攻城略地&#xff0c;百战成…

Oracle SQL语句执行步骤

Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1、当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法、表名、字段名等相关信息&#xff08;如下图&#xff09;&#xff0c;这过程会花比较长的时间&#xff0c;因为它要分…

Ubuntu 找不到libc.so.6

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu 上&#xff0c;其实这个库是存在的&#xff0c;只是地方换了&#xff0c;在"/lib/i386-linux-gnu/"下面&#xff0c;我们只需创建一个链接即可。使用下面的命令&#xff1a; rootubuntuJack:/lib/i3…

matlab学习:人脸识别之LBP (Local Binary Pattern)

1.算法简介 LBP是一种简单&#xff0c;有效的纹理分类的特征提取算法。LBP算子是由Ojala等人于1996年提出的&#xff0c;主要的论文是"Multiresolution gray-scale and rotation invariant texture classification with local binary patterns", pami, vol 24, no.7,…

大流量 网站

引用&#xff1a;http://www.admin10000.com/document/948.html 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数…

Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring

Portal-Basic Java Web应用开发框架&#xff08;简称 Portal-Basic&#xff09;是一套功能完备的高性能Full-Stack Web应用开发框架&#xff0c;内置稳定高效的MVC基础架构和DAO框架&#xff08;已内置Hibernate、MyBatis和JDBC支持&#xff09;&#xff0c;集成 Action拦截、F…

Windows 8实用窍门系列:9.Windows 8中使用FlipView

FlipView控件类似于翻页控件&#xff0c;并且是现成的翻页按钮&#xff0c;你只需要为其增加数据项即可。本文讲述两种方式的FlipView项目和展示。 一&#xff1a;直接前台FlipViewItem <FlipView><FlipViewItem><Image Stretch"Uniform" Source"…