Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1369938
  • 博文数量: 172
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3831
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-30 13:00
个人简介

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)

文章存档

2024年(27)

2023年(28)

2022年(43)

2020年(62)

2014年(3)

2013年(9)

分类: Oracle

2022-04-11 14:33:07

PL/SQL作为过程化语言的特性,是对面向集合操作的sql语言的有力补充,那么因为PL/SQL与sql有着千丝万缕的联系,可能让我们对PL/SQL产生一些误解,在工作中和论坛的问题中发现很多,咱们是否可以整理出一般的PL/SQL编程规则(只是一般的规则),
让大家对PL/SQL编程相关注意点有清晰地了解,帮助我们更好地使用PL/SQL语言。列出如下主题:


1.    PL/SQL中的命名规范和编程规范:包,过程,函数,触发器,类型,变量等

你偏向于匈牙利命名法还是骆驼命名法还是其他的?命名规范很重要,小组甚至公司遵循共同的命名规范,比如可以防止数据库表与过程里的变量重名,从而防止错误的代码产生,当然你也可以用前缀法来避免这种情况。但是总而言之,我们需要有共同遵守的规范,让我们的代码更清晰,可读性更强,问题更少。比如一些编程规范,你是否在定义局部变量的时候考虑一个初始值?还是使用默认值?是否考虑定制统一的PL/SQL格式模板?相关内容大家都可以讨论讨论。




2.PL/SQL中的异常处理规范:异常分类:编译期、运行期、可预测的、不可预测的,异常如何捕获与如何处理,在什么场合和位置处理异常。相关包比如DBMS_UTILITY.FORMAT_ERROR_STACKDBMS_UTILITY.FORMAT_CALL_STACKDBMS_UTILITY.FORMAT_ERROR_BACKTRACE以及10gDML ERROR LOG,批处理异常特点和应用。比如when others部分到底该如何处理,when others null;完事了?是否该考虑定制一个高度封装的异常处理包来处理异常?



3.PL/SQL中的静态sql和动态sql规范以及何时使用绑定变量,何时避免使用绑定变量,

如何规范化地写动态sql?


4.sqlPL/SQL的关系,如何最佳使用PL/SQL特性而避免使用sql

PL/SQLsql联系紧密,以至于很多人写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 bindingnocopy,returning,cache,各种类型的合理使用.事务和并发控制:commit的频率、场合、位置,for update (nowait),for update skip locked等。


7.减少代码耦合度和提高代码重用性一些讨论和案例,大家有类似经验都可以分享一下。比如包起到封装的效果,封装的好必然可以减少耦合度,提高代码重用性。


8.最后一点,PL/SQL内置包可能是PL/SQL编程中比较容易忽略的部分,oracle package众多,如果能使用恰当,会让我们的代码量减少,并且效率更好,那么能否讨论下你认为的常用包以及一般用途。

阅读(588) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~