威凡网全力打造:网页编程、软件开发编程、平面设计、服务器端开发、操作系统等在线学习平台!学编程,上威凡网!
数据库>> Mysql Sqlserver Oracle SQlite Access Sybase SQL其他
当前位置:首页 > 数据库 > Oracle
下一节
 OracleDML错误日志笔记

dml错误日志是oracle 10gr2引入的一个类似于sql*loader的错误日志功能。它的基本原理是把任何可能导致语句失败的记录转移,放到一张错误日志表中。

具体使用如下:

1、使用dbms_errlog.create_error_log来创建错误日志表

--原表my_test表结构

desc my_test

name type nullable default comments

------ ------------ -------- ------- --------

sid number

name varchar2(20) y

gender integer y

age number y

hobby varchar2(20) y

--执行下面的语句,生成错误日志表

execute dbms_errlog.create_error_log('my_test','my_test_bad');

pl/sql procedure successfully completed.

--生成的错误日志表my_test_bad结构

desc my_test_bad

name type nullable default comments

--------------- -------------- -------- ------- --------

ora_err_number$ number y

ora_err_mesg$ varchar2(2000) y

ora_err_rowid$ urowid(4000) y

ora_err_optyp$ varchar2(2) y

ora_err_tag$ varchar2(2000) y

sid varchar2(4000) y

name varchar2(4000) y

gender varchar2(4000) y

age varchar2(4000) y

hobby varchar2(4000) y

其中ora_err_tag$这个字段可以存放用户自定义的数据

2、在insert语句中使用my_test_bad错误日志表

insert into my_test

(sid,name,gender,age,hobby)

values (12,'joy',2,'age','book,football,run')

log errors into my_test_bad;

insert into my_test

(sid,name,gender,age,hobby)

values (12,'joy',2,'age','book,football,run')

log errors into my_test_bad

ora-01722: 无效数字

sql> select * from my_test_bad;--(结果不规范,用图展示)

update,delete,merge语句都可以在后面声明错误日志,方法相同。如:


update my_test

set age = 'yyy'

where sid = 12

log errors into my_test_bad;

注意事项:log errors子句不引起隐式提交,也就是说,即使回滚了失误,错误信息还是会保存在错误日志表中。


申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!
下一节
相关教程  
其他教程  
Mysql
Sqlserver
Oracle
SQlite
Access
Sybase
SQL其他

违法和不良信息举报中心】邮箱:254677821@qq.com
Copyright©威凡网 版权所有 苏ICP备2023020142号
站长QQ:254677821