http://www.itpub.net/thread-1560427-3-1.html
1. 非关键字小写,关键字大写,用下划线分隔,用前缀区分变量与表列名。不强求变量初始值。
2.
永远只捕获可预测异常。在最外层(直接被客户调用的一层)捕获WHEN
OTHERS并调用一个通用子过程写入日志。子过程里将DBMS_UTILITY.FORMAT_ERROR_BACKTRACE写入表。然后继续RAISE。
应用主动抛出的异常用RAISE_APPLICATION_ERROR(-20001,‘XXX:
..........‘),其中XXX为自定义错误代码。
DML ERROR LOG以及BULK
EXCEPTION只在ETL类的代码中使用,不在事务中使用。前提是数据之间没有联系,错误是可以事后处理的。
3.
大部分用静态SQL,万不得已才用动态SQL. 动态SQL的写法要求同静态SQL, 注意可读性。
大部分情况下用绑定变量,仅在非密集查询类且绑定变量使得计划恶化才用常量。
4. 没必要的SQL当然不用(比如可用赋值取代FROM
DUAL),具体问题具体分析。
如果是相对静态的信息,不需要“事先查一遍”。一致性要求高的操作,要么用一个SQL完成,要么在事务的开始加上行锁使得操作串行化。
5.
尽量用SQL取代CURSOR,这个也是具体问题具体分析。
其他的话题都太大了。