ORACLE编程规范.docx

上传人:b****1 文档编号:2020370 上传时间:2023-05-02 格式:DOCX 页数:131 大小:112.72KB
下载 相关 举报
ORACLE编程规范.docx_第1页
第1页 / 共131页
ORACLE编程规范.docx_第2页
第2页 / 共131页
ORACLE编程规范.docx_第3页
第3页 / 共131页
ORACLE编程规范.docx_第4页
第4页 / 共131页
ORACLE编程规范.docx_第5页
第5页 / 共131页
ORACLE编程规范.docx_第6页
第6页 / 共131页
ORACLE编程规范.docx_第7页
第7页 / 共131页
ORACLE编程规范.docx_第8页
第8页 / 共131页
ORACLE编程规范.docx_第9页
第9页 / 共131页
ORACLE编程规范.docx_第10页
第10页 / 共131页
ORACLE编程规范.docx_第11页
第11页 / 共131页
ORACLE编程规范.docx_第12页
第12页 / 共131页
ORACLE编程规范.docx_第13页
第13页 / 共131页
ORACLE编程规范.docx_第14页
第14页 / 共131页
ORACLE编程规范.docx_第15页
第15页 / 共131页
ORACLE编程规范.docx_第16页
第16页 / 共131页
ORACLE编程规范.docx_第17页
第17页 / 共131页
ORACLE编程规范.docx_第18页
第18页 / 共131页
ORACLE编程规范.docx_第19页
第19页 / 共131页
ORACLE编程规范.docx_第20页
第20页 / 共131页
亲,该文档总共131页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ORACLE编程规范.docx

《ORACLE编程规范.docx》由会员分享,可在线阅读,更多相关《ORACLE编程规范.docx(131页珍藏版)》请在冰点文库上搜索。

ORACLE编程规范.docx

ORACLE编程规范

目录

第1章范围和简介5

1.1简介5

1.2范围5

1.3关键词5

1.4术语和定义5

第2章文件格式及命名6

2.1文件格式6

2.2文件命名6

第3章书写规范7

3.1大小写风格7

3.2缩进风格8

3.3空格及换行12

3.4创建表15

3.5创建过程/函数/包16

第4章命名规范17

第5章注释规范22

第6章常用语法26

6.1变量声明26

6.2返回值26

6.3符号*26

6.4包的使用27

6.5绑定变量27

6.6异常处理29

6.7事务控制30

6.8游标使用30

6.9代码规模32

第7章SQL建议与约束33

7.1建议33

7.2禁止36

第8章应用设计及性能调整41

8.1日志表设计41

8.1.1特点描述41

8.1.2数据分析42

8.1.3设计方案42

8.1.4注意事项45

8.2并发事务表设计46

8.2.1特点描述46

8.2.2数据分析46

8.2.3设计方案46

8.2.4注意事项50

8.3分区的设计51

8.3.1分区的优点52

8.3.2RANGE分区的应用场景53

8.3.3HASH分区的应用场景54

8.3.4分区注意事项55

8.4索引设计55

8.5性能参数61

8.5.1序列对性能的影响61

8.5.2EXTENT对数据插入性能的影响62

8.5.3INITRANS对性能的影响63

8.6常见等待事件64

第9章开发工具65

9.1UltraEdit-3265

9.2PL/SQLDeveloper65

9.3TOAD65

9.4PowerDesigner66

第10章数据库代码走读CheckList67

第11章附录70

11.1常见模块缩写表70

11.2常用词缩写表70

表目录

表1大小写规范表7

表2对象前缀表17

表3ORACLE系统对象使用前缀表18

表4参数、变量、常量、异常等前缀表19

表5常见模块缩写表46

表6常用词缩写表47

范围和简介

1.1简介

本规范是针对关系型数据库ORACLE的相关特性,拟定的用于指导和规范相关开发过程的规范,其旨在通过该规范的约束和建议,使开发人员可以在他们所编写的代码中保持统一正确的风格,提供代码的可读性以及减少出现错误的几率。

1.2范围

本规范仅适用于关系型数据库系统ORACLE以及其对应的PL/SQL脚本语言。

1.3关键词

编程规范、数据库、ORACLE、PL/SQL

1.4术语和定义

本规范采用以下的术语描述:

★规则:

编程时强制必须遵守的原则。

★建议:

编程时必须加以考虑的原则。

★说明:

对此规则或建议进行必要的解释。

★示例:

对此规则或建议从正、反两个方面给出。

文件格式及命名

1.5文件格式

规则:

数据库脚本文件的文件格式必须为纯文本,不允许使用包含格式文本的文件格式。

1.6文件命名

规则:

每个数据库脚本文件命名请参照下列描述:

1.表:

TableName.tab

2.函数:

FunctionName.fnc

3.存储过程:

ProcedureName.prc

4.包规范:

PackageName.spc

5.包体:

PackageName.bdy

书写规范

1.7大小写风格

规则:

数据库脚本中涉及到的各种保留字、关键字、操作符、数据类型、标识符、对象、字段、变量、常量等的大小写风格必须遵循以下规范:

表1大小写规范表

文字类型

大小写

示例

ORACLE保留字(ReservedWord)

大写

IDENTIFIED、INITIAL、LONG、MAXEXTENTS、RENAME、ROWNUM、SYSDATE、VARCHAR2

ORACLE关键字(Keywords)

大写

ANALYZE、AUTOEXTEND、COMPILE、DBA、EXTENT、INSTANCE、MAXTRANS、SAVEPOINT、TABLESPACE

ANSISQL保留字(ReservedWord)

大写

ADD、BETWEEN、CREATE、DISTINCT、DROP、FROM、SESSION、SELECT、TABLE、UPDATE、VARCHAR

ANSISQL关键字(Keywords)

大写

BEGIN、COMMIT、CONSTRAINT、COUNT、CURSOR、DECLARE、EXECUTE、PRIMARY、SUM、TRANSACTION

PL/SQL保留字(ReservedWord)

大写

ARRAY、BOOLEAN、DATABASE、DO、EXIT、RAISE、SAVEPOINT、RUN、WHILE、XOR

操作符(Operators)

大写

ALL、AND、ANY、ESCAPE、EXISTS、OR、UNION

数据类型(DataTypes)

大写

INT、NUMBER、DATE

系统数据库对象(SystemTables、Views、Functions、Packages、PackageMethods、Exceptions)

大写

USER$、DBA_JOBS、DECODE、SUBSTR、DBMS_OUTPUT、PUT_LINE、NO_DATA_FOUND

自定义数据库对象(UserObjects)

逻辑首字母大写

T_Table_Name、F_Function_Name、P_Procedure_Name

字段名(Field)

逻辑首字母大写

User_Name、Acct_Item_ID

常量(Constants)

逻辑首字母大写

c_BeginDate、c_EndDate

变量(Variable)

逻辑首字母大写

v_BeginDate、v_FaxNumber、v_StaffAuth

说明:

●ORACLE的关键字和保留字请参见视图V$RESERVED_WORDS;

●上表中需要大写的关键字/保留字,可以录入UltraEdit的wordfile.txt,在使用UltraEdit开发时输入这些关键字保留字后会自动变为大写。

1.8缩进风格

规则:

脚本代码块采用缩进风格书写,保证代码清晰易读,风格一致。

缩进格数统一为4个空格,但需要关键字右对齐或者参数/字段向上对齐的时候例外。

示例1:

CREATESEQUENCESQ_CSP_TABLENAME

MINVALUE1

STARTWITH1

INCREMENTBY1;

示例2:

IFc_CursorName%ISOPENTHEN

CLOSEc_CursorName;

ENDIF;

规则:

缩进必须使用空格键,不允许使用TAB键。

规则:

同一条语句占用多于一行时,每行的第一个关键字应当右对齐,但INSERT...SELECT语句例外。

示例1:

FETCHc_Cursor

INTOv_Field1,v_Field2,...

关键字右对齐

示例2:

SELECTFIELD1,FIELD2,...

FROMT_CSP_TABLENAME

WHEREFIELD1>1

AND(FIELD2SYSDATE+3)

ANDFIELD3LIKE'HUAWEI%'

GROUPBYFIELD1,FIELD2

ORDERBYFIELD1,FIELD2;

关键字右对齐

规则:

在INSERT...SELECT语句中,如果需要换行时,应使INSERTINTO部分的字段与SELECT部分的字段一一对应,以增强可读性。

示例:

错误的写法:

BEGIN

INSERTINTOT_DEST_TABLENAME(DESTFIELDNAME1,DESTFIELDNAME2,

DESTFIELDNAME3,DESTFIELDNAME4,DESTFIELDNAME5,

DESTFIELDNAME6,DESTFIELDNAME7)

SELECTSRCFIELDNAME1,SRCFIELDNAME2,SRCFIELDNAME3,

SRCFIELDNAME4,SRCFIELDNAME5,SRCFIELDNAME6,

SRCFIELDNAME7

FROMT_SRC_TABLENAME;

END;

正确的写法A:

BEGIN

INSERTINTOT_DEST_TABLE_NAME(DESTFIELDNAME1,DESTFIELDNAME2,

DESTFIELDNAME3,DESTFIELDNAME4,DESTFIELDNAME5,

DESTFIELDNAME6,DESTFIELDNAME7)

SELECTSRCFIELDNAME1,SRCFIELDNAME2,

SRCFIELDNAME3,SRCFIELDNAME4,SRCFIELDNAME5,

SRCFIELDNAME6,SRCFIELDNAME7

FROMT_SRC_TABLE_NAME;

END;

正确的写法B:

BEGIN

INSERTINTOT_DEST_TABLE_NAME(DESTFIELDNAME1,--注释

DESTFIELDNAME2,--注释

DESTFIELDNAME3,--注释

DESTFIELDNAME4,--注释

DESTFIELDNAME5,--注释

DESTFIELDNAME6,--注释

DESTFIELDNAME7)--注释

SELECTSRCFIELDNAME1,--注释

SRCFIELDNAME2,--注释

SRCFIELDNAME3,--注释

SRCFIELDNAME4,--注释

SRCFIELDNAME5,--注释

SRCFIELDNAME6,--注释

SRCFIELDNAME7--注释

FROMT_SRC_TABLE_NAME;

END;

正确的写法C:

BEGIN

INSERTINTOT_DEST_TABLE_NAME(

DESTFIELDNAME1,--注释

DESTFIELDNAME2,--注释

DESTFIELDNAME3,--注释

DESTFIELDNAME4,--注释

DESTFIELDNAME5,--注释

DESTFIELDNAME6,--注释

DESTFIELDNAME7)--注释

SELECTSRCFIELDNAME1,--注释

SRCFIELDNAME2,--注释

SRCFIELDNAME3,--注释

SRCFIELDNAME4,--注释

SRCFIELDNAME5,--注释

SRCFIELDNAME6,--注释

SRCFIELDNAME7--注释

FROMT_SRC_TABLE_NAME;

END;

正确的写法D:

BEGIN

INSERTINTOT_DEST_TABLE_NAME(

DESTFIELDNAME1,--注释

DESTFIELDNAME2,--注释

DESTFIELDNAME3,--注释

DESTFIELDNAME4,--注释

DESTFIELDNAME5,--注释

DESTFIELDNAME6,--注释

DESTFIELDNAME7)--注释

SELECTSRCFIELDNAME1,--注释

SRCFIELDNAME2,--注释

SRCFIELDNAME3,--注释

SRCFIELDNAME4,--注释

SRCFIELDNAME5,--注释

SRCFIELDNAME6,--注释

SRCFIELDNAME7--注释

FROMT_SRC_TABLE_NAME;

END;

关键字右对齐

说明:

1、在错误的写法中,虽然SELECT语句部分的SRCFIELDNAME1,SRCFIELDNAME2,SRCFIELDNAME3可以写在一行中,但由于INSERTINTO语句部分中DESTFIELDNAME1,DESTFIELDNAME2写在一行中,而DESTFIELDNAME3在下一行,因此SELECT语句中每行的字段应与INSERTINTO语句中的字段一一对应(如正确的写法A);

2、INSERTINTO语句中的各个字段折行后,应缩进并与上一字段左对齐(如正确的写法B),或者与INTO关键字左对齐(如正确的写法C);

3、SELECT语句中折行后的第一个字段名应缩进并与上一行的第一个字段名左对齐。

规则:

INSERTINTO语句中,如果需要对每个字段增加注释,应将每个字段单独列为一行,并在行尾增加注释。

示例1:

INSERTINTOT_DEST_TABLE_NAME(DESTFIELDNAME1,--注释1

DESTFIELDNAME2,--注释2

DESTFIELDNAME3)--注释3

VALUES(FieldValue1,

FieldValue2,

FieldValue3);

或者

INSERTINTOT_DEST_TABLE_NAME(

DESTFIELDNAME1,--注释1

DESTFIELDNAME2,--注释2

DESTFIELDNAME3)--注释3

VALUES(

FieldValue1,

FieldValue2,

FieldValue3);

或者

INSERTINTOT_DEST_TABLE_NAME

DESTFIELDNAME1,--注释1

DESTFIELDNAME2,--注释2

DESTFIELDNAME3--注释3

VALUES

FieldValue1,

FieldValue2,

FieldValue3

);

其他说明:

1、在规范的代码模板中详细给出了各种情况下的范例写法,请编码过程参考;

2、在数据库脚本的编码过程中,请严格按照代码模板进行书写;

3、对于模板中未涉及的情况,应在保证符合上述规范原则,同时和代码模板中的风格保持一致的前提下,根据实际情况灵活处理。

1.9空格及换行

规则:

不允许把多个短语句写在一行中,即一行只写一条语句。

示例:

v_Variable1:

=1;v_Variable2:

='abc';

应写成:

v_Variable1:

=1;

v_Variable2:

='abc';

说明:

两个赋值语句不能写在一行中,必须分两行写。

规则:

相对独立的程序块之间、变量说明之后必须加空行。

示例:

v_Variable1:

=1;

IFv_BeginDateISNULLTHEN

v_BeginDate:

=SYSDATE-15;

ENDIF;

应写成:

--初始化局部变量

v_Variable1:

=1;

--判断开始时间

IFv_BeginDateISNULLTHEN

v_BeginDate:

=SYSDATE-15;

ENDIF;

说明:

两个程序块在逻辑上相对独立,应用空行加以分隔,同时增加注释。

建议:

建议对超过120字符的语句要分行书写,长表达式应在低优先级操作符处换行,操作符或关键字放在新行之首。

划分出的新行应适当地缩进,使排版整齐、语句可读。

是否分行应根据实际情况而定,原则是保证代码整齐、语句可读。

分行示例:

120字符

……(a*b*c*d)+(e*f)+……

应写成:

……(a*b*c*d)

+(e*f)+……

说明:

1、加法的优先级低于乘法,因此应在加号处换行;

2、两组乘法虽然在逻辑上会先于加法执行,但显式加上括号使可读性更强。

规则:

调用函数或过程时,如果参数列表超过120字符,应根据逻辑内容进行换行,或者每个参数占用一行。

示例:

错误的写法:

120字符

P_PROCEDURE(i_Param1,i_Param2,i_Param3,o_Param1,oParam2,...);

正确的写法A:

P_PROCEDURE(i_Param1,i_Param2,i_Param3,

o_Param1,o_Param2,...);

正确的写法B:

P_PROCEDURE(i_Param1,--注释

i_Param2,--注释

i_Param3,--注释

o_Param1,--注释

o_Param2,--注释

...)--注释

说明:

1、因为前三个为输入参数,后两个为输出参数,因此在第3、4参数之间换行比较清晰(如正确的写法A);

2、有时为了增加注释,可以使每个参数皆占用一行(如正确的写法B);

3、参数换行以后与上一行的第一个参数对齐。

规则:

双目运算符、操作符前后应以空格分隔,间隔符之后应以空格分隔。

示例:

v_DateVar:

=TO_DATE('2001-01-0101:

30:

00','YYYY-MM-DDHH24:

MI:

SS');

v_IntegerVar1:

=v_IntegerVar2+v_IntegerVar3;

IFv_Number>0THEN

应写成:

v_DateVar:

=TO_DATE('2001-01-0101:

30:

00','YYYY-MM-DDHH24:

MI:

SS');

↑↑

赋值符前后加空格逗号后面加空格

v_IntegerVar1:

=v_IntegerVar2+v_IntegerVar3;

↑↑

赋值符前后加空格加号前后加空格

IFv_Number>0THEN

比较符号前后加空格

建议:

不同优先级的操作符混合使用时,建议使用括号进行隔离。

示例:

……a*b+c……

应写成:

……(a*b)+c……

说明:

使用括号使代码的优先级更加清晰,而且可以避免犯错。

建议:

SQL语句中存在不同优先级的关系运算符时,建议使用括号。

示例:

WHEREFIELD1>1ANDFIELD2SYSDATE+3

应写成:

WHERE(FIELD1>1ANDFIELD2SYSDATE+3)

说明:

如果SQL语句的条件复杂,很容易出现问题,因此增加括号可以提高可阅读性。

1.10创建表

规则:

脚本中的字段名缩进为4个空格。

规则:

脚本中字段名称、字段类型、DEFAULT关键字应左对齐,NULL/NOTNULL应右对齐(也可以认为就是NULL关键字左对齐)。

示例:

CREATETABLET_WF_TABLE_NAME

INTFIELDINTNOTNULL,

FLOATFIELDNUMBER(4,2)DEFAULT1.23NOTNULL,

DATEFIELDDATEDEFAULTSYSDATENULL,

VARCHAR2FIELDVARCHAR2(200)NULL

TABLESPACESERVICE_MAIN_DAT;

说明:

至于每行中的每个项目之间使用多少个空格没有明确要求,只要求从纵向上各个字段的名称、数据类型、缺省值、是否为空等对齐美观即可。

1.11创建过程/函数/包

规则:

脚本中的参数缩进为4个空格。

规则:

脚本中的参数名称、数据类型、注释信息应左对齐,IN/OUT/INOUT关键字左对齐右对齐皆可。

示例:

CREATEORREPLACEPROCEDUREP_CSP_PROCEDURENAME

i_DateParamDATE,--注释

o_IntParamINOUTINT,--注释

o_VarcharParamOUTVARCHAR2,--注释

o_RetCodeOUTINT--注释

或者

CREATEORREPLACEPROCEDUREP_CSP_PROCEDURENAME

i_DateParamDATE,--注释

o_IntParamINOUTINT,--注释

o_VarcharParamOUTVARCHAR2,--注释

o_RetCodeOUTINT--注释

说明:

至于每行中的每个项目之间使用多少个空格没有明确要求,只要求从纵向上各个参数的名称、数据类型、IN/OUT关键字等对齐美观即可。

命名规范

规则:

所有用户自定义的数据库对象名称统一使用形如“对象前缀+下划线+模块名缩写+下划线+对象名称”的格式。

说明:

●对象名称中可以根据需要使用下划线进行分隔;

●创建对象时,禁止通过双引号指定对象名称,ORACLE在数据字典中统一存放为大写;

●对象类型前缀建议不要超过三个字符,可参考以下对象前缀表;

●编码时禁止以ORACLE系统对象的前缀作为对象类型前缀,具体请参考ORACLE系统对象使用前缀表;

●模块名缩写建议不要超过三个字符,可参考附录中的常见模块名缩写表;

●数据表字段名称没有前缀;

●对象名称长度不宜超过18个字符。

●计费相关模块名:

Comm,Cash,Owe,Acct

表2对象前缀表

对象类型

前缀

示例

备注

表空间命名(TableSpace)

TBS

TBS_ACCT_INDEX

TBS_COMM_INDEX

表(Table)

T

T_OWE_TABLENAME

T_CASH_BEGINDATE

遵循现有规则,以A开头,例如:

A_OWE_ITEM

视图(View)

V

V_OWE_VIEWNAME

字段(Field)

FIELDNAME

STATE_DATE

建议采用

STATE_DATE的方式来命名

序列(Sequence)

SEQ

SEQ_TABLENAME_FIELDNAME

索引(Index)

IDX

IDX_OWE_INDEXNAME

IDX_CASH_INDEXNAME

如果表名或

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2