打算写中级开发系列的主要目的是把我生活工作中所学做一个整理,另外说说部分在工作中遇到的情况。这个系列目前打算写err_log、高级分组.model子句、子叶查询、分析函数、索引、处理字符串、集合运算嵌套表、物化视图、子查询因子化。如果想看其他的可以在文章后留言,我会的时间够就直接写,不会的学习一下再写。下面开始正文。
dbms_errlog.create_error_log(
err_log_table_owner => $owner,
dml_table_name => $table_name,
err_log_table_name => $err_log_table_name,
err_log_table_space => null,
skip_unsupported => true/false
);
实际运用主要写两个参数,插入表名,错误数据表名,
execute dbms_err_log.create_error_log('表名','错误表名');
insert into table_name select ... from ..
log errors into err_table_name
reject limit unlimited;
commit;
插入表上可以用check约束,然后违反约束等原因都显示在错误表里。log errors子句不会追踪LOB,LONG或对象数据类型列的值,可以开skip_unsupported参数创建表。
这一功能主要用途是清洗数据,无需人工去查找不符合规则的数据,意图是把符合规则的先插进来,再去单独处理不符合规则的数据。