pl/sql编程要点-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1156335
  • 博文数量: 166
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3760
  • 用 户 组: 普通用户
  • 注册时间: 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

文章分类

全部博文(166)

文章存档

2024年(21)

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 ndingnocopy,returning,cache,各种类型的合理使用.事务和并发控制:commit的频率、场合、位置,for update (nowait),for update skip locked等。


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


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

阅读(474) | 评论(0) | 转发(0) |
0

上一篇:

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图