今天终于完成了数据上载的智能修改, 就是说只修改数据有变化的列.
比如我们的库存表, 有50个列, 52% 的UPDATE仅修改"价格/price"一列.
可是遇到了一个极其古怪的臭虫, 如下所示, 一个简单的Loop循环, 漏掉了End Loop后面的分号";", 程序居然通过了编译,而且运行时也没有报错, 就是 End Loop 后面的语句被当成注释一样给跳过了. 这样的错误太难debug了, 幸好我充分的运用了code instrument技术, 几乎每一行代码都跟了一句debug (类似log4j), 很快找到了错误所在.
...
run_bulk_update;
FOR i in 1 .. lt_top_pattern.Count
Loop
run_bulk_update_tophit(p_hit_cols => lt_top_pattern(i));
End Loop ;
run_bulk_insert;
save_col_upd_pattern;
...
数据库版本是11.1.0.7.0, SunOS 5.10
Tuesday, July 07, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment