`

常用的PL/SQL开发原则

阅读更多

a) 广泛使用绑定变量,特别是批量绑定,因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换
b) 广泛使用UROWID来处理DML语句
c) 在你的存储过程中谨慎使用DDL语句,因为这可能会破坏你的transaction的连续性,更为严重的是可能会阻塞DML操作并可能会导致大量library cache latch争用并且有可能会导致某些sql执行计划的改变。

library cache请参考:

http://blog.sina.com.cn/s/blog_656184530101262t.html

http://prefectliu.blog.163.com/blog/static/236308182010116111911183/
d) 不要在存储过程里不应该commit的地方commit,特别是当你的存储过程会被另外一个存储过程调用的时候,这么做会破坏父存储过程transaction的连续性。
e) 注意你面对的数据量,小数据量的处理方法和海量数据的处理方法是不一样的
f) 循环的时候要注意清空临时变量的值
g) 注意“select into 变量”的问题,使用子begin语句封装“select into 变量”以避免可能会出现的错误,这样就可以避免要在“select into 变量”之前先执行一下select count(*)
h) 不要让oracle执行PL/SQL代码时产生隐式转换
i)  在PL/SQL中定义varchar2变量的时候当你在不知道你所定义的变量的长度的时候可以将其定义为varchar2(4000),这一点都不浪费!
j)  如果你写的一组存储过程有逻辑上的关联,建议你把这些存储过程封装到一个package里
k) 改正你的PL/SQL代码里的所有编译时编译器提示出的warning
l)  循环的时候一定要注意exit
m) 处理显式cursor的时候一定要注意fetch和exit

n)  bulk collect into的时候不要一次collect太多的数据,建议一次collect的数据量在10000条以内,可以用批量绑定自带的limit子句来限制或者使用rownum来限制
o) 如果你使用了批量绑定,那为什么要把时间浪费在写诸如insert into tablename(column1,column2,……,column100) values(value1(i),value2(i),……,value100(i))这样的sql语句上面?如果有可能,就写一个你自己的存储过程代码生成器吧,让它来帮你生成这样的语句。你应该把精力集中在更有用的方面!
p)  你希望你的代码被并发执行吗?如果你不希望或者你的代码根本就不能够被并发执行,那就想一个办法控制并发吧!在应用层面控制就好,比如在update之前先尝试对该记录加for update nowait的锁,或者利用DML语句当前读的特性来避免并发都是不错的主意
q) 不要写诸如insert into tablename1 select * from tablename2这样的语句,你考虑到扩展性了吗?假如以后tablename1或者tablename2增加或减少字段了呢?

r)  谨慎使用hint,除非你很清楚你在做什么。比如说这里你强制oracle使用了某个索引,假如以后这个索引的名字被改了,由此带来的执行计划的变更你怎么办?你考虑到这种情况了吗?
s) 用好临时表,有时候临时表很有用,特别是在根据一堆复杂条件去更新海量数据的时候
t) 尽量避免在存储过程里使用递规!不是说不能用递规(递规在某些特定的情况下很有用),而是说在用递规的时候一定要避免无限递规的情况!
u) 写好PL/SQL代码里的注释

分享到:
评论

相关推荐

    PL/SQL安装包

    3. **事务处理**:PL/SQL支持ACID(原子性、一致性、隔离性和持久性)原则,允许开发者在数据库中进行事务操作。 4. **错误处理**:通过EXCEPTION关键字,PL/SQL提供了一种处理运行时错误的方式,增强了程序的健壮...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle PL/SQL学习官方教材

    14. **最佳实践**:教材可能还会提供编写高效、可读性强、易于维护的PL/SQL代码的最佳实践和设计原则。 "Oracle9i PL/SQL学习"这部分可能着重于Oracle 9i版本中的特性,虽然现在已经有更新的版本,但对初学者来说,...

    精通pl/sql

    《精通PL/SQL》这本书是针对Oracle数据库系统中PL/SQL编程语言的深度解析与实践指南,...Oracle 10g版本虽然已相对较旧,但其核心的PL/SQL语法和编程原则在后续版本中依然适用,因此该书的知识仍然具有很高的参考价值。

    oracle pl/sql fundamentals

    1. **PL/SQL概述**:了解PL/SQL的基本概念,包括它的结构、块(DECLARE、BEGIN、END)以及如何在SQL*Plus或其他开发工具中执行PL/SQL程序。 2. **变量和数据类型**:深入学习PL/SQL中的变量声明,包括内置的数据...

    Oracle PL/SQL best practice

    Oracle PL/SQL最佳实践 Oracle PL/SQL是一种强大的编程语言,用于在Oracle数据库环境中构建复杂的业务逻辑和数据处理任务...不断学习和实践是提升PL/SQL技能的关键,这将有助于开发出更高效、更稳定的数据库解决方案。

    PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql_pls

    PL/SQL是Oracle数据库开发的重要组成部分,理解和掌握PL/SQL有助于提升数据库管理和应用程序开发的技能。"PLSQL.zip_oracl_oracle pl/sql ppt_pl sql ppt tutorial_pl/sql plsql.ppt"这个压缩包提供了学习PL/SQL的...

    PL/SQL DEVELOPER 8.0 注册机 注册码

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,主要用于编写、调试、测试和管理PL/SQL代码。这款软件以其直观的界面和强大的功能在IT行业内深受数据库管理员和开发人员的喜爱。...

    pl/sql 开发最佳实践

    ### PL/SQL 开发最佳实践 #### Oracle简介与发展历程 Oracle数据库系统由Oracle公司于1979年推出,标志着关系数据库管理系统(RDBMS)的诞生。它是一款跨平台的数据库解决方案,能够运行在从个人电脑到大型主机的...

    PL/SQL用户指南与参考(中文Doc版)

    本指南旨在帮助开发者熟练掌握PL/SQL的主要特性,提升数据库应用程序的开发能力。 首先,理解PL/SQL的主要特性至关重要。PL/SQL的块结构是其基本组成部分,包括声明部分、执行部分和异常处理部分,这使得代码组织...

    PL/SQL语言优化以及编程培训教材

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库系统中的一个强大编程组件,结合了SQL的查询能力与过程性编程语言的特点,使得数据库管理、数据处理和应用开发更为高效。 这份教材分为...

    PL/SQL详解 从入门到精通 英文版

    3. **最佳实践**:提供关于如何编写高效、可靠且易于维护的PL/SQL代码的指导原则。 4. **实际案例**:通过具体的项目案例来展示如何应用所学知识解决实际问题。 #### 四、PL/SQL基础知识 ##### 4.1 变量和常量 - ...

    PL/SQL 程序设计教材(中文版)

    《PL/SQL程序设计教材(中文版)》是一份专为学习Oracle数据库编程语言PL/SQL而准备的教学资料。...无论你是数据库管理员、开发人员还是对Oracle数据库感兴趣的个人,这份教材都将是你学习PL/SQL的宝贵资源。

    PL/SQL 8.0正式注册版

    PL/SQL 8.0是Oracle在20世纪90年代末期发布的一个版本,虽然现在已经较为老旧,但在当时它代表了数据库管理和开发的先进水平。 PL/SQL的主要特点包括: 1. **结构化编程**:支持循环、条件判断、子程序(函数和...

    Oracle PL/SQL guid

    - **内置包**:介绍Oracle PL/SQL中的一些常用内置包,如DBMS_OUTPUT、DBMS_SQL等,这些包提供了丰富的功能来简化开发工作。 #### 三、编程风格与命名规范 - **代码格式化**:建议开发者采用一致的缩进规则、空格...

    PL/SQL Developer 906 最新版本+KEYGEN

    在使用PL/SQL Developer时,开发者应掌握Oracle数据库的基础知识,包括SQL语句、PL/SQL语法、数据库设计原则等,这样才能充分发挥该工具的作用,开发出高效、稳定和可维护的数据库应用。同时,持续关注官方更新,...

    PL/SQL(函数、包、触发器、异常、游标等)

    PL/SQL,全称Procedural...在实际开发中,还需要注意性能优化、代码规范和数据库设计原则,这样才能充分发挥PL/SQL的优势,为你的Oracle数据库项目提供强大支持。通过不断实践和学习,你将成为一名出色的PL/SQL开发者。

    PL/SQL 7和8 注册码

    在IT领域,特别是数据库开发与管理中,PL/SQL(Procedural Language for SQL)是一种增强版的SQL语言,主要用于Oracle数据库,它结合了过程化编程语言的特点与SQL的数据处理能力,使得开发者能够编写复杂的数据库...

Global site tag (gtag.js) - Google Analytics