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,一经查实,立即删除!

相关文章

Linux下调tcp最大参数

TCP并发请求溺出 调优:系统开启某个监听端口后,当多个TCP请求连接监听端后,会把多个请求交给backlog的默认监听队列由socket server一并处理,backlog有自己的队列长度默认128,当机器处理能力较慢且并发请求值较高时就要…

IOS程序内发短信

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

遍历tuple

#include #include namespace detail { template<class Tuple, class F, std::size_t…Is> void for_each(Tuple&& tuple, F&& f, std::index_sequence<Is…>) { using expand int[]; void(expand{ 0, (f(std::get(std::forward(tuple))), 0)……

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

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

可变参数模板展开

//#include //#include //#include //#include //#include <type_traits> //#include void printer() { } template void printer(T a) { std::cout << a << std::endl; } //c11 template<class …Args> void printer(Args&&… args) …

增强决策能力

(1)克服从众心理。从众心理是指个体对社会的认识和态度常常受到群体对社会的认识和态度的左右。从众行为者的意识深处考虑的是自己的行为能否为大众所接受&#xff0c;追寻的是一种安全感。从众行为者认为群体的规范、他人的行为是正确的时候&#xff0c;就会表现出遵从&#x…

std::call_once写单列模式

#include #include #include class Singleton { public: static Singleton& GetInstance() { //c11保证唯一性 static std::once_flag flag; std::call_once(flag, { instance_.reset(new Singleton); }); return *instance_.get(); } ~Singleton() { std::cout <&l…

【转】关键字过滤算法

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Collections;namespace BLL.Common {#region 操作类public class KeywordsFilter{#region 关键字过滤/// <summary>/// 关键字过滤/// /// </summary>/// &l…

char*转wstring

void char_to_wchar(const char* ch, std::wstring& w_str) { wchar_t* wchar; int len MultiByteToWideChar(CP_ACP, 0, ch, strlen(ch), NULL, 0); wchar new wchar_t[len 1]; MultiByteToWideChar(CP_ACP, 0, ch, strlen(ch), wchar, len); wchar[len] ‘\0’; w_st…

如何用cmd命令加密文件夹

如何用cmd命令加密文件夹? 首先先从开始&#xff0d;运行中打开Cmd窗口。然后在cmd窗口中输入如下命令 md d:\test..\ 在d盘上创建一个名为test.的文件夹。我们刚才在d盘创建的那个文件夹在普通方式是打不开的&#xff0c;不信你就试试。 那么我们如何才能打开这个test.的文件…

任何项目都适用的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;实现秒级甚至亚秒级的查询响…

关于lock_guard使用细节

c11之后新增的了lock_guard函数&#xff0c;使用起来比较方便&#xff0c;但难免会遇到很多坑&#xff0c;接下来&#xff0c;我就简单说一下&#xff1a; 1&#xff1a;如何自己实现一个mutex类的话&#xff0c;需要使用lock函数和unlock函数&#xff0c;而且名字要一模一样 2…

WPF的WebBrowser屏蔽弹出脚本错误窗口

WPF中使用System.Windows.Controls.WebBrowser时脚本错误会弹出提示框&#xff0c;但这个WebBrowser没有提供类似System.Windows.Forms.WebBrowser的ScriptErrorsSuppressed方法&#xff0c;于是MSDN上有了解决办法&#xff0c;但是试了试不行&#xff0c;改了下就可以啦&#…

混乱开发,既伤身体又伤感情

这几天读了些UML用户指南和设计模式面向对象开发&#xff0c;由于写了很长时间的程序&#xff0c;突然发现体力劳动越来越严重&#xff0c;情绪有些低落和凌乱。 实现虽然已经结束&#xff0c;可是竟然在不知不觉中留下了一丝软件开发的阴影。这几天很不情愿去写代码&#xff…

常见的排序算法二——希尔排序

原理&#xff1a;被称为增量缩小排序。先将序列按增量划分为元素个数相同的若干组&#xff0c; 使用直接插入排序法进行排序&#xff0c;然后不断缩小增量直至为1&#xff0c; 最后使用直接插入排序完成排序。 要点&#xff1a;增量的选择以及排序最终以1为增量进行排序结束。 …

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

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

.Net Micro Framework导航总贴(新手必看)

一、什么是.Net Micro Framework它是一个.Net框架&#xff08;微型框架&#xff09;&#xff0c;也是一个嵌入式系统OS&#xff0c;可以裸奔在ARM单片机上&#xff0c;也可以运行在别的嵌入式系统上。我们可以用VisualStudio C#开发代码&#xff0c;调用对应各种硬件的类库方法…

char数组拷贝wchar数组

std::string str “123”; size_t nDestSize mbstowcs(NULL, str.c_str(), 0) 1; //size_t nDestSize strlen(str.c_str()) 1; wchar_t* wchDest new wchar_t[nDestSize]; wmemset(wchDest, 0, nDestSize); mbstowcs(wchDest, str.c_str(), nDestSize); std::wstring wst…

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…