About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc
全部博文(172)
分类: Oracle
2022-04-11 14:33:07
1. PL/SQL中的命名规范和编程规范:包,过程,函数,触发器,类型,变量等
你偏向于匈牙利命名法还是骆驼命名法还是其他的?命名规范很重要,小组甚至公司遵循共同的命名规范,比如可以防止数据库表与过程里的变量重名,从而防止错误的代码产生,当然你也可以用前缀法来避免这种情况。但是总而言之,我们需要有共同遵守的规范,让我们的代码更清晰,可读性更强,问题更少。比如一些编程规范,你是否在定义局部变量的时候考虑一个初始值?还是使用默认值?是否考虑定制统一的PL/SQL格式模板?相关内容大家都可以讨论讨论。
2.PL/SQL中的异常处理规范:异常分类:编译期、运行期、可预测的、不可预测的,异常如何捕获与如何处理,在什么场合和位置处理异常。相关包比如DBMS_UTILITY.FORMAT_ERROR_STACK、DBMS_UTILITY.FORMAT_CALL_STACK、DBMS_UTILITY.FORMAT_ERROR_BACKTRACE以及10g的DML ERROR LOG,批处理异常特点和应用。比如when others部分到底该如何处理,when others null;完事了?是否该考虑定制一个高度封装的异常处理包来处理异常?
3.PL/SQL中的静态sql和动态sql规范以及何时使用绑定变量,何时避免使用绑定变量,
如何规范化地写动态sql?
4.sql与PL/SQL的关系,如何最佳使用PL/SQL特性而避免使用sql。
PL/SQL与sql联系紧密,以至于很多人写PL/SQL就好像写了一堆sql似的,但是PL/SQL必有自己独特的特性,善于使用PL/SQL而减少sql代码,可以提高程序性能和重用性,可维护性。善用PL/SQL的特性,可以减少不必要的sql使用,这是肯定的,比如user函数,我还需要select user …from dual吗?判断表中存在某个信息就对此信息的数据做相关操作,我还需要事先查一遍吗?
5.PL/SQL中的cursor使用规范,如何避免不必要的cursor使用 。
能用简单的高效的sql完成尽量使用sql,而不要在cursor里打开,循环,执行sql的不高效动作。是不是与第4点有点冲突?其实没有,第4点说的是不要滥用sql,第5点我想希望大家讨论些如何善用sql减少代码提高效率。
6.如何使用好PL/SQL的一些优化机制:管道函数、bulk binding、nocopy,returning,cache,各种类型的合理使用.事务和并发控制:如commit的频率、场合、位置,for update (nowait),for update skip locked等。
7.减少代码耦合度和提高代码重用性一些讨论和案例,大家有类似经验都可以分享一下。比如包起到封装的效果,封装的好必然可以减少耦合度,提高代码重用性。
8.最后一点,PL/SQL内置包可能是PL/SQL编程中比较容易忽略的部分,oracle package众多,如果能使用恰当,会让我们的代码量减少,并且效率更好,那么能否讨论下你认为的常用包以及一般用途。