ImageVerifierCode 换一换
格式:DOCX , 页数:131 ,大小:112.72KB ,
资源ID:20193206      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20193206.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ORACLE编程规范.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ORACLE编程规范.docx

1、ORACLE编程规范目 录第1章 范围和简介 51.1 简介 51.2 范围 51.3 关键词 51.4 术语和定义 5第2章 文件格式及命名 62.1 文件格式 62.2 文件命名 6第3章 书写规范 73.1 大小写风格 73.2 缩进风格 83.3 空格及换行 123.4 创建表 153.5 创建过程/函数/包 16第4章 命名规范 17第5章 注释规范 22第6章 常用语法 266.1 变量声明 266.2 返回值 266.3 符号* 266.4 包的使用 276.5 绑定变量 276.6 异常处理 296.7 事务控制 306.8 游标使用 306.9 代码规模 32第7章 SQL建

2、议与约束 337.1 建议 337.2 禁止 36第8章 应用设计及性能调整 418.1 日志表设计 418.1.1 特点描述 418.1.2 数据分析 428.1.3 设计方案 428.1.4 注意事项 458.2 并发事务表设计 468.2.1 特点描述 468.2.2 数据分析 468.2.3 设计方案 468.2.4 注意事项 508.3 分区的设计 518.3.1 分区的优点 528.3.2 RANGE分区的应用场景 538.3.3 HASH分区的应用场景 548.3.4 分区注意事项 558.4 索引设计 558.5 性能参数 618.5.1 序列对性能的影响 618.5.2 EX

3、TENT对数据插入性能的影响 628.5.3 INITRANS对性能的影响 638.6 常见等待事件 64第9章 开发工具 659.1 UltraEdit-32 659.2 PL/SQL Developer 659.3 TOAD 659.4 PowerDesigner 66第10章 数据库代码走读CheckList 67第11章 附录 7011.1 常见模块缩写表 7011.2 常用词缩写表 70表目录表1 大小写规范表 7表2 对象前缀表 17表3 ORACLE系统对象使用前缀表 18表4 参数、变量、常量、异常等前缀表 19表5 常见模块缩写表 46表6 常用词缩写表 47范围和简介1.1

4、 简介本规范是针对关系型数据库ORACLE的相关特性,拟定的用于指导和规范相关开发过程的规范,其旨在通过该规范的约束和建议,使开发人员可以在他们所编写的代码中保持统一正确的风格,提供代码的可读性以及减少出现错误的几率。1.2 范围本规范仅适用于关系型数据库系统ORACLE以及其对应的PL/SQL脚本语言。1.3 关键词编程规范、数据库、ORACLE、PL/SQL1.4 术语和定义本规范采用以下的术语描述: 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 说明:对此规则或建议进行必要的解释。 示例:对此规则或建议从正、反两个方面给出。文件格式及命名1.5 文件格式规则:数据库

5、脚本文件的文件格式必须为纯文本,不允许使用包含格式文本的文件格式。1.6 文件命名规则:每个数据库脚本文件命名请参照下列描述:1表:TableName.tab2函数:FunctionName.fnc3存储过程:ProcedureName.prc4包规范:PackageName.spc5包体:PackageName.bdy书写规范1.7 大小写风格规则:数据库脚本中涉及到的各种保留字、关键字、操作符、数据类型、标识符、对象、字段、变量、常量等的大小写风格必须遵循以下规范:表1 大小写规范表文字类型大小写示例ORACLE保留字(Reserved Word)大写IDENTIFIED、INITIAL、

6、LONG、MAXEXTENTS、RENAME、ROWNUM、SYSDATE、VARCHAR2ORACLE关键字(Keywords)大写ANALYZE、AUTOEXTEND、COMPILE、DBA、EXTENT、INSTANCE、MAXTRANS、SAVEPOINT、TABLESPACEANSI SQL保留字(Reserved Word)大写ADD、BETWEEN、CREATE、DISTINCT、DROP、FROM、SESSION、SELECT、TABLE、UPDATE、VARCHARANSI SQL关键字(Keywords)大写BEGIN、COMMIT、CONSTRAINT、COUNT、CUR

7、SOR、DECLARE、EXECUTE、PRIMARY、SUM、TRANSACTIONPL/SQL保留字(Reserved Word)大写ARRAY、BOOLEAN、DATABASE、DO、EXIT、RAISE、SAVEPOINT、RUN、WHILE、XOR操作符(Operators)大写ALL、AND、ANY、ESCAPE、EXISTS、OR、UNION数据类型(Data Types)大写INT、NUMBER、DATE系统数据库对象(System Tables、Views、Functions、Packages、Package Methods、Exceptions)大写USER$、DBA_JO

8、BS、DECODE、SUBSTR、DBMS_OUTPUT、PUT_LINE、NO_DATA_FOUND自定义数据库对象(User Objects)逻辑首字母大写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;

9、上表中需要大写的关键字/保留字,可以录入UltraEdit的wordfile.txt,在使用UltraEdit开发时输入这些关键字保留字后会自动变为大写。1.8 缩进风格规则:脚本代码块采用缩进风格书写,保证代码清晰易读,风格一致。缩进格数统一为4个空格,但需要关键字右对齐或者参数/字段向上对齐的时候例外。示例1:CREATE SEQUENCE SQ_CSP_TABLENAME MINVALUE 1 START WITH 1 INCREMENT BY 1;示例2:IF c_CursorName%ISOPEN THEN CLOSE c_CursorName;END IF;规则:缩进必须使用空格键

10、,不允许使用TAB键。规则:同一条语句占用多于一行时,每行的第一个关键字应当右对齐,但INSERT.SELECT语句例外。示例1:FETCH c_Cursor INTO v_Field1, v_Field2, . 关键字右对齐示例2:SELECT FIELD1, FIELD2, . FROM T_CSP_TABLENAME WHERE FIELD1 1 AND (FIELD2 SYSDATE + 3) AND FIELD3 LIKE HUAWEI% GROUP BY FIELD1, FIELD2 ORDER BY FIELD1, FIELD2; 关键字右对齐规则:在INSERT.SELECT语

11、句中,如果需要换行时,应使INSERT INTO部分的字段与SELECT部分的字段一一对应,以增强可读性。示例:错误的写法:BEGIN INSERT INTO T_DEST_TABLENAME (DESTFIELDNAME1, DESTFIELDNAME2, DESTFIELDNAME3, DESTFIELDNAME4, DESTFIELDNAME5, DESTFIELDNAME6, DESTFIELDNAME7) SELECT SRCFIELDNAME1, SRCFIELDNAME2, SRCFIELDNAME3, SRCFIELDNAME4, SRCFIELDNAME5, SRCFIELD

12、NAME6, SRCFIELDNAME7 FROM T_SRC_TABLENAME;END;正确的写法A:BEGIN INSERT INTO T_DEST_TABLE_NAME (DESTFIELDNAME1, DESTFIELDNAME2, DESTFIELDNAME3, DESTFIELDNAME4, DESTFIELDNAME5, DESTFIELDNAME6, DESTFIELDNAME7) SELECT SRCFIELDNAME1, SRCFIELDNAME2, SRCFIELDNAME3, SRCFIELDNAME4, SRCFIELDNAME5, SRCFIELDNAME6, S

13、RCFIELDNAME7 FROM T_SRC_TABLE_NAME;END;正确的写法B:BEGIN INSERT INTO T_DEST_TABLE_NAME (DESTFIELDNAME1, - 注释 DESTFIELDNAME2, - 注释 DESTFIELDNAME3, - 注释 DESTFIELDNAME4, - 注释 DESTFIELDNAME5, - 注释 DESTFIELDNAME6, - 注释 DESTFIELDNAME7) - 注释 SELECT SRCFIELDNAME1, - 注释 SRCFIELDNAME2, - 注释 SRCFIELDNAME3, - 注释 SRC

14、FIELDNAME4, - 注释 SRCFIELDNAME5, - 注释 SRCFIELDNAME6, - 注释 SRCFIELDNAME7 - 注释 FROM T_SRC_TABLE_NAME;END;正确的写法C:BEGIN INSERT INTO T_DEST_TABLE_NAME ( DESTFIELDNAME1, - 注释 DESTFIELDNAME2, - 注释 DESTFIELDNAME3, - 注释 DESTFIELDNAME4, - 注释 DESTFIELDNAME5, - 注释 DESTFIELDNAME6, - 注释 DESTFIELDNAME7) - 注释 SELECT

15、 SRCFIELDNAME1, - 注释 SRCFIELDNAME2, - 注释 SRCFIELDNAME3, - 注释 SRCFIELDNAME4, - 注释 SRCFIELDNAME5, - 注释 SRCFIELDNAME6, - 注释 SRCFIELDNAME7 - 注释 FROM T_SRC_TABLE_NAME;END;正确的写法D:BEGIN INSERT INTO T_DEST_TABLE_NAME ( DESTFIELDNAME1, - 注释 DESTFIELDNAME2, - 注释 DESTFIELDNAME3, - 注释 DESTFIELDNAME4, - 注释 DESTF

16、IELDNAME5, - 注释 DESTFIELDNAME6, - 注释 DESTFIELDNAME7) - 注释 SELECT SRCFIELDNAME1, - 注释 SRCFIELDNAME2, - 注释 SRCFIELDNAME3, - 注释 SRCFIELDNAME4, - 注释 SRCFIELDNAME5, - 注释 SRCFIELDNAME6, - 注释 SRCFIELDNAME7 - 注释 FROM T_SRC_TABLE_NAME;END; 关键字右对齐说明:1、 在错误的写法中,虽然SELECT语句部分的SRCFIELDNAME1, SRCFIELDNAME2, SRCFIE

17、LDNAME3可以写在一行中,但由于INSERT INTO语句部分中DESTFIELDNAME1, DESTFIELDNAME2写在一行中,而DESTFIELDNAME3在下一行,因此SELECT语句中每行的字段应与INSERT INTO语句中的字段一一对应(如正确的写法A);2、 INSERT INTO语句中的各个字段折行后,应缩进并与上一字段左对齐(如正确的写法B),或者与INTO关键字左对齐(如正确的写法C);3、 SELECT语句中折行后的第一个字段名应缩进并与上一行的第一个字段名左对齐。规则:INSERT INTO语句中,如果需要对每个字段增加注释,应将每个字段单独列为一行,并在行尾

18、增加注释。示例1:INSERT INTO T_DEST_TABLE_NAME (DESTFIELDNAME1, - 注释1 DESTFIELDNAME2, - 注释2 DESTFIELDNAME3) - 注释3VALUES (FieldValue1, FieldValue2, FieldValue3);或者INSERT INTO T_DEST_TABLE_NAME ( DESTFIELDNAME1, - 注释1 DESTFIELDNAME2, - 注释2 DESTFIELDNAME3) - 注释3VALUES ( FieldValue1, FieldValue2, FieldValue3);或

19、者INSERT INTO T_DEST_TABLE_NAME( DESTFIELDNAME1, - 注释1 DESTFIELDNAME2, - 注释2 DESTFIELDNAME3 - 注释3)VALUES( FieldValue1, FieldValue2, FieldValue3);其他说明:1、 在规范的代码模板中详细给出了各种情况下的范例写法,请编码过程参考;2、 在数据库脚本的编码过程中,请严格按照代码模板进行书写;3、 对于模板中未涉及的情况,应在保证符合上述规范原则,同时和代码模板中的风格保持一致的前提下,根据实际情况灵活处理。1.9 空格及换行规则:不允许把多个短语句写在一行中

20、,即一行只写一条语句。示例:v_Variable1 := 1; v_Variable2 := abc;应写成:v_Variable1 := 1; v_Variable2 := abc;说明:两个赋值语句不能写在一行中,必须分两行写。规则:相对独立的程序块之间、变量说明之后必须加空行。示例:v_Variable1 := 1;IF v_BeginDate IS NULL THEN v_BeginDate := SYSDATE - 15;END IF;应写成:- 初始化局部变量v_Variable1 := 1; - 判断开始时间IF v_BeginDate IS NULL THEN v_BeginD

21、ate := SYSDATE - 15;END IF;说明:两个程序块在逻辑上相对独立,应用空行加以分隔,同时增加注释。建议:建议对超过120字符的语句要分行书写,长表达式应在低优先级操作符处换行,操作符或关键字放在新行之首。划分出的新行应适当地缩进,使排版整齐、语句可读。是否分行应根据实际情况而定,原则是保证代码整齐、语句可读。分行示例: 120字符 (a * b * c * d) + (e * f) + 应写成: (a * b * c * d) + (e * f) + 说明:1、 加法的优先级低于乘法,因此应在加号处换行;2、 两组乘法虽然在逻辑上会先于加法执行,但显式加上括号使可读性更强

22、。规则:调用函数或过程时,如果参数列表超过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, - 注释 .) -

23、 注释说明:1、 因为前三个为输入参数,后两个为输出参数,因此在第3、4参数之间换行比较清晰(如正确的写法A);2、 有时为了增加注释,可以使每个参数皆占用一行(如正确的写法B);3、 参数换行以后与上一行的第一个参数对齐。规则:双目运算符、操作符前后应以空格分隔,间隔符之后应以空格分隔。示例:v_DateVar:=TO_DATE(2001-01-01 01:30:00,YYYY-MM-DD HH24:MI:SS);v_IntegerVar1:=v_IntegerVar2+v_IntegerVar3;IF v_Number0 THEN应写成:v_DateVar := TO_DATE(2001-

24、01-01 01:30:00, YYYY-MM-DD HH24:MI:SS); 赋值符前后加空格 逗号后面加空格v_IntegerVar1 := v_IntegerVar2 + v_IntegerVar3; 赋值符前后加空格 加号前后加空格IF v_Number 0 THEN 比较符号前后加空格建议:不同优先级的操作符混合使用时,建议使用括号进行隔离。示例: a * b + c 应写成: (a * b) + c 说明:使用括号使代码的优先级更加清晰,而且可以避免犯错。建议:SQL语句中存在不同优先级的关系运算符时,建议使用括号。示例:WHERE FIELD1 1 AND FIELD2 SYSD

25、ATE + 3应写成:WHERE (FIELD1 1 AND FIELD2 SYSDATE + 3)说明:如果SQL语句的条件复杂,很容易出现问题,因此增加括号可以提高可阅读性。1.10 创建表规则:脚本中的字段名缩进为4个空格。规则:脚本中字段名称、字段类型、DEFAULT关键字应左对齐,NULL/NOT NULL应右对齐(也可以认为就是NULL关键字左对齐)。示例:CREATE TABLE T_WF_TABLE_NAME( INTFIELD INT NOT NULL, FLOATFIELD NUMBER(4, 2) DEFAULT 1.23 NOT NULL, DATEFIELD DATE

26、 DEFAULT SYSDATE NULL, VARCHAR2FIELD VARCHAR2(200) NULL)TABLESPACE SERVICE_MAIN_DAT;说明:至于每行中的每个项目之间使用多少个空格没有明确要求,只要求从纵向上各个字段的名称、数据类型、缺省值、是否为空等对齐美观即可。1.11 创建过程/函数/包规则:脚本中的参数缩进为4个空格。规则:脚本中的参数名称、数据类型、注释信息应左对齐,IN/OUT/IN OUT关键字左对齐右对齐皆可。示例:CREATE OR REPLACE PROCEDURE P_CSP_PROCEDURENAME( i_DateParam DATE,

27、 - 注释 o_IntParam IN OUT INT, - 注释 o_VarcharParam OUT VARCHAR2, - 注释 o_RetCode OUT INT - 注释)或者CREATE OR REPLACE PROCEDURE P_CSP_PROCEDURENAME( i_DateParam DATE, - 注释 o_IntParam IN OUT INT, - 注释 o_VarcharParam OUT VARCHAR2, - 注释 o_RetCode OUT INT - 注释)说明:至于每行中的每个项目之间使用多少个空格没有明确要求,只要求从纵向上各个参数的名称、数据类型、I

28、N/OUT关键字等对齐美观即可。命名规范规则:所有用户自定义的数据库对象名称统一使用形如“对象前缀+下划线+模块名缩写+下划线+对象名称”的格式。说明: 对象名称中可以根据需要使用下划线进行分隔; 创建对象时,禁止通过双引号指定对象名称,ORACLE在数据字典中统一存放为大写; 对象类型前缀建议不要超过三个字符,可参考以下对象前缀表; 编码时禁止以ORACLE系统对象的前缀作为对象类型前缀,具体请参考ORACLE系统对象使用前缀表; 模块名缩写建议不要超过三个字符,可参考附录中的常见模块名缩写表; 数据表字段名称没有前缀; 对象名称长度不宜超过18个字符。 计费相关模块名:Comm,Cash,

29、Owe,Acct表2 对象前缀表对象类型前缀示例备注表空间命名(TableSpace)TBSTBS_ACCT_INDEXTBS_COMM_INDEX表(Table)TT_OWE_TABLENAMET_CASH_BEGINDATE遵循现有规则,以A开头,例如:A_OWE_ITEM视图(View)VV_OWE_VIEWNAME字段(Field)无FIELDNAMESTATE_DATE建议采用STATE_DATE的方式来命名序列(Sequence)SEQSEQ_TABLENAME_FIELDNAME索引(Index)IDXIDX_OWE_INDEXNAMEIDX_CASH_INDEXNAME如果表名或

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1