网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > IT认证 > Oracle认证

oracle数据库开发规范具体条件

栏目: Oracle认证 / 发布于: / 人气:1.22W

  编程规范

oracle数据库开发规范具体条件

1:所有数据库关键字和保留字都大写;字段、变量的大小写

2:程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为2/4个。

必须使用空格,不允许使用【tab】键。

3:当同一条语句暂用多于一行时,每行的其他关键字与第一行的关键字进行右对齐。

4:不允许多个语句写到一行,即一行只写一条语句。

5:避免把复杂的SQL语句写到同一行,建议要在关键字和谓词处换行。

6:相对独立的程序块之间必须加空行。BEGIN、END独立成行。

7:太长的表达式应在低优先级操作符处换行,操作符或关键字应放在新行之首。不同类型的操作符混合使用时,用括号隔离,使得代码清晰。

8: 不同类型的操作符混合使用时,应使用括号明确的表达运算的先后关系。

9:运算符以及比较符左边或者右边只要不是链接的括弧,则空一格。

10:if 后的条件要用括号括起来,括号内每行最多两个条件。

11:减少控制语句的检查次数,如在 else( )控制语句中,对最常用符合条件,尽量往前被检查到。尽量避免使用嵌套的if 语句,在这种情况应使用多个if 语句来判断其可能。

  命名规范

  1:不使用数据库关键字和保留字,为了避免不必要的冲突和麻烦。

  2:严禁使用带空格的名称来给字段和表命名,会出错误而终止。

  3:用户自定义数据库对象:表,视图,主外键,索引,触发器,函数,存储过程,序列,同义词,数据库连接,包,包体风格要保持一致。

数据库名称1-8个字符,其他对象1-30个字符,数据库连接不操过30个字符。使用英文字母、数字、下划线。

除表外,其他对象命名最好用不同的前缀来区别。

表 tbl_/t_

视图 v_

序列 seq_

簇 c_

触发器 trg_

存储过程 sp_/p_

函数 f_/fn_

物化视图 mv_

包和包体 pkg_

类和类体 typ_

主键 pk_

外键 fk_

唯一索引 uk_

普通索引 idx_

位图索引 bk_

  4:PL/SQL对象和变量命名规则

输入变量 i_

输出变量 o_

输入输出变量 io_

普通变量 v_

全局变量 gv_

常量 大写

游标 cur_

用户自定义类型 type_

保存点 spt_

不允许使用中文和特殊字符

用户对象命名应全部为小写,且不允许使用控制符号强制转换对象为小写字符

变量命名,要有具体含义,能表明变量类型。

  5:注释规范

源程序有效注释量必须在30%左右。

统一文件头的注释,针对存储过程,函数进行功能性描述,入出参数说明。

/*******************************************************************

名称:

功能描述:

修订记录

版本号 编辑时间 编辑人 修改描述

入出参数说明

返回值描述(针对函数)

*******************************************************************/

所有变量定义需要添加注释,说明该变量的用途和含义。

程序分支必须书写注释,这些语句是程序实现某一特定功能的关键。

在程序块的结束行加注释,表明程序块结束。

注释应与描述的代码相似,对代码的注释应在其上方或右方现今为止,不能放在下面。

禁止在注释中使用缩写,特别是非常用的缩写。

注释要与描述的内容进行相同的缩排。

注释上面的代码应空行隔开。

注释用中文书写。

尽量使用”--” 进行注注释。

行尾注释须使用”--” 。

  6:分区表命名

分区表的表名可以遵循普通表的正常命名规则。主要用途的缩写+下划线+yymm。

按地域分布的子公司库存表( 每个区域一个分区),分区名这为表的主要用途的缩写+区域的缩写。

最小分区名字为before_data 规则3.4.5:最大分区名字为after_data 规则3.4.5:子分区的名字为:父分区名+下划线+sub+ 下划线+no( 区域缩写),根据实际情况进行组合。

分区表本地索引命名在正常索引名的最后一个下划线前加L。

分区表全局索引命名在正常索引名的最后一个下划线前加G。

  DML操作规范

1:减少控制语句的检查次数,应将最常用的符合条件前置以便被检查到。

2:避免使用 SELECT *语句,给出字段列表,避免出现在表结构变化时程序无法识别的情况。

3:INSERT 语句必须给出字段列表,避免在表结构变化时发生编译错误。

4:从表中同一笔记录中获取记录的字段值,须使用一SQL 语句得到,不允许分多条SQL 语句。

5:当一个PL/SQL 或SQL 语句中涉及到多个表时,始终使用别名来限定字段名,这使其它人阅读起来更方便,避免了含议模糊的引用,其中能够别名中清晰地判断出表名。

6:禁止进行字段数据类型的隐式转换,所有转换必须进行明确的'数据类型转换

说明:隐式转换会导致字段上的索引失效,而进行显式转换,会提醒到开发人员该种操作会导致索引失效

7:禁止在多表关联的时候,在非索引字段上的关联;

8:进行模糊查询时,禁止条件中字符串直接以“%”开头;

9:尽量使用DECODE来简化SQL访问数据库的次数

10:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.

11:当PL/SQL或SQL语句中涉及多个表时,始终使用别名来限定表名和字段名。

12:确保变量和参数在类型和长度上与表数据列相匹配,否则较宽或较大数据进来时会异常。

13:使用EXISTS/NOT EXISTS替代IN/NOT IN

14:采用表连接替代EXIST

15:复杂的SQL是否由设计不当引起,复杂的SQL考虑用程序块来执行。

处理的优先级

静态SQL>动态SQL

绑定变量的SQL>动态SQL

SQL>PL/SQL过程

SQL>游标遍历

ORACLE函数>自定义函数

16: 使用ORACLE分析函数来代替同一表多次的关联。

17: 使用动态SQL时要绑定变量。

18:不要把空的变量直接与比较运算符比较,如果结果可能为空,应使用IS NULL货IS NOT NULL 或NVL函数进行比较。

19:order by 后面字段不唯一时分页会出现问题,分页时如果order by 后面的字段不唯一,一定要让order by 唯一,最佳方案是增加一pk,如实在没办法则可以追加rowid,order by 后尽量避免使用rowid。