请教oracle存储过程,如何记录错误发生所在行?如何记录某语句更新了多少行?
时间:2011-12-10
来源:互联网
我有个oracle存储过程,是要放在UNIX服务器上用crontab脚本定时跑,因为数据量大,UPDATE操作和INSERT操作都比较多,执行时间很长,很容易出现一线异常错误导致存储过程只执行了部分,后面的语句因为错误而没有执行。用sqlcode和sqlerrm又都只记录了错误原因,没法定位是哪个SQL的问题,请问有没办法在错误发生的时候,知道错误是发生在哪一行?
另外,在存储过程中,某个insert或者update操作执行完毕以后,有没有办法记录下这个语句插入或者更新了多少行?这个语句执行花费了多长时间?
另外,在存储过程中,某个insert或者update操作执行完毕以后,有没有办法记录下这个语句插入或者更新了多少行?这个语句执行花费了多长时间?
作者: chuyuan 发布时间: 2011-12-10
1. 可以采用异常处理,在程序出现异常时,跳转到异常处理部分,在那里获取已经执行的行数。
2. 使用系统预定义光标SQL%ROWCOUNT:获得的值为刚执行完的一条SQL语句处理的记录数目。
3. 获得SQL语句执行时所用的时间,在SQL*Plus中很容易得到,通过set time on;设置,而后执行sql语句就会显示所耗费的时间;在PL/SQL中没有相应的方法,不过可以变通一下,在sql语句执行之前向一个临时表插入系统时间,在语句执行结束后,再向临时表插入一个系统的执行时间。最后输出一下这2个时间的差,即可获得执行时间。
2. 使用系统预定义光标SQL%ROWCOUNT:获得的值为刚执行完的一条SQL语句处理的记录数目。
3. 获得SQL语句执行时所用的时间,在SQL*Plus中很容易得到,通过set time on;设置,而后执行sql语句就会显示所耗费的时间;在PL/SQL中没有相应的方法,不过可以变通一下,在sql语句执行之前向一个临时表插入系统时间,在语句执行结束后,再向临时表插入一个系统的执行时间。最后输出一下这2个时间的差,即可获得执行时间。
作者: LuiseRADL 发布时间: 2011-12-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28