ORACLE 存储过程异常捕获并抛出
for tab_name in tables loop
execute immediate 'drop table '||tab_name; --此处可能会报错
end loop;
当前情况是,循环表,进行删除,如果出现表不存在,则会异常中断,导致整个存储过程挂掉,需求是要能跳过错误的执行,不进行处理,进行下个循环。
最终代码:
for tab_name in tables loop
begin execute immediate 'drop table '||tab_name; --此处可能会报错 EXCEPTION WHEN others THEN NULL;
end; end loop;
如何抛出
上面存储过程是,异常处理写法是(异常跳过不处理): EXCEPTION
WHEN OTHERS THEN
END 这种写法当存储过程抛出异常时,我们不知道其到底抛出了哪种异常(比如列宽度不够大而在插入数据时抛异常),可以按如下方式显示异常信息 EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(‘sqlcode : ’ ||sqlcode);
DBMS_OUTPUT.put_line(‘sqlerrm : ’ ||sqlerrm);
END sqlcode是异常编号,sqlerrm是异常的详细信息,如果异常信息太多,可以截取一段显示,如
DBMS_OUTPUT.put_line(‘sqlerrm : ’ ||substr(sqlerrm,1,100));是截取前100个字符显示出来。
也可以插入到日志表
insert xxx values (sqlcode,sqlerrm)
ORACLE 存储过程异常捕获并抛出的更多相关文章
- JS异常捕获和抛出
try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式) 使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种 ...
- oracle存储过程异常捕获
在oracle中捕获异常,通过 //sql执行 exception when others then dbms_output.putline('exception'); 其中others表示捕获未命名 ...
- JAVA异常的捕获与抛出原则
在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...
- 【开发技术】java异常的捕获与抛出原则
在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...
- 《Java基础——异常的捕获与抛出》
Java基础--异常的捕获与抛出 ' 前言: Error类(错误)和Exception类(异常)是Throwable类的子类. 异常分为CheckedException类(编译时异常)和Ru ...
- Atitti 跨语言异常的转换抛出 java js
Atitti 跨语言异常的转换抛出 java js 异常的转换,直接反序列化为json对象e对象即可.. Js.没有完整的e机制,可以参考java的实现一个stack层次机制的e对象即可.. 抛出Ru ...
- shiro自定义异常无法被捕获总是抛出AuthenticationException解决方案
这个问题我也是出的莫名其妙,刚开始好好的,然后配置多realm之后出的. 现在直入主题 在继承了 org.apache.shiro.authc.pam.ModularRealmAuthenticato ...
- java中异常处理机制 throw抛出自定义业务逻辑异常 throws继续抛出 catch捕获后会自动继续抛向调用方法
package com.swift; public class Exception_TestC { public static void main(String[] args) { /* * 第5题: ...
- 存储过程——异常捕获&打印异常信息
目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...
随机推荐
- 【LG3321】[SDOI2015]序列统计
[LG3321][SDOI2015]序列统计 题面 洛谷 题解 前置芝士:原根 我们先看一下对于一个数\(p\),它的原根\(g\)有什么性质(好像就是定义): \(g^0\%p,g^1\%p,g^2 ...
- 【HDU3117】Fibonacci Numbers
[HDU3117]Fibonacci Numbers 题面 求斐波那契数列的第\(n\)项的前四位及后四位. 其中\(0\leq n<2^{32}\) 题解 前置知识:线性常系数齐次递推 其实后 ...
- Nginx入门篇(五)之LNMP环境应用
一.LNMP组合工作原理 (1)用户通过浏览器输入域名请求Nginx web服务: (2)Nginx对请求的资源进行判断,如果是静态资源,则由Nginx返回给用户:如果是动态请求(.php文件),那么 ...
- char和String 在jsp java代码中与jstl代码中的区别
在 jsp java代码中 '0' ,这种代表char 在jstl中 '0' 会被解释为 String 所以也可以用 .equals 方法
- L012-linux系统文件属性知识深入详解小结
L012-linux系统文件属性知识深入详解小结 最近的学习重点不在这上面,所以更新的比较慢,再加上母亲住院,感情问题,一系列吧,愿快点度过这黑色的4月份,希望我能在5月份阳光起来,加油! 回归正题 ...
- 我们一起学习WCF 第二篇WCF承载多个接口
前言:现在王大叔养了大批猪,赚了很多钱.但是最近发现养鸡也可以赚很多钱,他就像扩展业务开始养鸡.又过两年他发现市场对狗的需求量很大,他开始养狗.那么他改怎么做呢,不可能去修改猪住的地方把鸭子和狗放里面 ...
- grep 文件内容搜索
比如现在我们要查找在/home/userlan/目录中哪些文件中包含foobar这个关键字 1. 打开终端2. 输入命令 grep -rl "foobar" /home/userl ...
- Linux目录与文件操作
文件命名规则: 1.严格区分大小写: 2.长度不能超过255个字符: 3.不能使用/当文件名 mkdir:创建空目录 -p:parent,父目录,逐级创建 -v:verbose,打印详细信息 命令行展 ...
- 做程序开发的你如果经常用Redis,这些问题肯定会遇到
分布式缓存Redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存.事件发布或订阅.高速队列等多种场景.Redis使用ANSI C语言编写,提供字符串(String).哈希(Hash ...
- LVM缩小根分区
逻辑卷不是根分区都可以在线扩容和缩小 根分区是可以在线扩容,但不可以在线缩小 Linux系统进入救援模式 依次选择: 欢迎界面 ---------- Rescue installed system C ...