PLSQL编码规-细则文件编号:版本:1.1拟制审核会签标准化批准XXXXXX公司XXXIT部目录PLSQL编码规-细则第2页共25页前言.......................................................................41范围.....................................................................52术语和定义...............................................................52.1原则.............................................................52.2规则.............................................................52.3建议.............................................................52.4说明.............................................................52.5正例.............................................................52.6反例.............................................................53代码布局.................................................................54注释.....................................................................95命名规则................................................................146可读性..................................................................187变量....................................................................198函数与过程..............................................................209程序效率................................................................2210异常处理............................................................2311数据库触发器标准....................................................2412SQL性能优化技术....................................................24PLSQL编码规-细则第3页共25页版本变更记录版本号拟制/修改日期拟制/修改人修改记录批准人注:1)拟制、审核、会签、批准不走电子流程时,必须用钢笔或签字笔填写,不得用铅笔、圆珠笔填写,不得涂改。本模板中用“”括起来的内容包括本段,是编写指导,在最终的文档中应予以删除。其它内容应予以保留。如果某节内容无需填写,则在该节下写“无”,而不要将本节删除或不填写任何内容(留白将无法判断:是本节内容无需填写还是因为疏忽而忘了填写。)PLSQL编码规-细则第4页共25页前言编码规范包括总则和细则两部分。总则部分是对编码的总体性规范要求,适用于多种编码语言;细则部分是在总则的规范要求下,针对具体语言的特点而提出的规范要求。本规范是编码规范的细则部分,适用于PLSQL编程语言。编写本规范的目的是为了进一步规范PLSQL软件编程风格,提高软件源程序的可读性、可靠性和可重用性,确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改进以前的工作,提高软件源程序的质量和可维护性,减少软件维护成本。本规范的内容包括:排版、注释、标识符命名、可读性、变量、结构、函数&过程、可测性、程序效率、质量保证、代码编辑&编译&审查、代码测试&维护等。规范最后给出了一个编程实例供软件人员参考。本规范分成规则性和建议性两种:对于规则性规范,要求所有软件开发人员严格执行;对于建议性规范,各项目编程人员可以根据实际情况选择执行。自本规范实施之日起,以后新编写的和修改的代码均应执行本规范。PLSQL编码规-细则第5页共25页1范围本标准规定了PLSQL语言的编程规范,主要包括排版、注释、标识符命名、可读性、变量、结构、函数&过程、可测性、程序效率、质量保证、代码编辑&编译&审查、代码测试&维护等。本规范自生效之日起,对以后新编写的和修改的代码有约束力。2术语和定义下列术语和定义适用于本标准。2.1原则编程时应该坚持的指导思想。2.2规则编程时必须遵守的约定。2.3建议编程时必须加以考虑的约定。2.4说明对此规则或建议的必要的解释。2.5正例对此规则或建议给出的正确例子。2.6反例对此规则或建议给出的反面例子。3代码布局代码布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。更重要的是,统一的程序布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且会涉及到产品质量,涉及到个人编程能力的提高,必须要引起重视。说明:一般源代码每行的字符数不得超过80,除非只剩下一个单词。如一行源代码超过了80个字符,可在逗号和操作符后面开始换行,并相对第一行缩进2个空格,或相对当前行做调整。正例:【规则3-1】行应当限制在80个字符以内。超过80个字符的行应当在低优先级操作符处拆分成新行,操作符放在行首。拆分出的新行相对于第一行要缩进两个字符的空格,保持排版整齐,语句可读。PLSQL编码规-细则第6页共25页例1:BEGINSELECTSUM(quantity)INTO:zte_rpctq_safe_inventories.quantityFROMzte_rpct_onhandWHEREsubinventory_id=:zte_rpctq_safe_inventories.subinventory_idANDinventory_item_id=:zte_rpctq_safe_inventories.inventory_item_id;EXCEPTIONWHENNO_DATA_FOUNDTHEN:zte_rpctq_safe_inventories.quantity:=NULL;END;例2:FUNCTIONget_prod_config_cost(p_cutoff_dateINDATE,p_product_idINNUMBER,p_inventory_item_idINNUMBER)RETURNNUMBER;说明:对于由开发工具自动生成的代码可以有不一致。说明:空行起着分隔程序段落的作用。适当的空行可以使程序的布局更加清晰正例:BEGINSELECTCOUNT(*)INTONORMALFROMfnd_concurrent_requestsWHEREstatus_code='C';SELECTCOUNT(*)INTOwarningFROMfnd_concurrent_requestsWHEREstatus_code='G';SELECTCOUNT(*)INTOerrorFROMfnd_concurrent_requests【规则3-2】程序块要采用缩进风格编写,缩进的空格数为4个。【规则3-3】相对独立的程序块之间、变量说明之后必须加空行。PLSQL编码规-细则第7页共25页WHEREstatus_code='E';END;反例:如下例子不符合规范。BEGINSELECTCOUNT(*)INTONORMALFROMfnd_concurrent_requestsWHEREstatus_code='C';SELECTCOUNT(*)INTOwarningFROMfnd_concurrent_requestsWHEREstatus_code='G';SELECTCOUNT(*)INTOerrorFROMfnd_concurrent_requestsWHEREstatus_code='E';END;正例:IFNOTMRP_GLOBALS.Equal(l_x_flow_schedule_rec.alternate_bom_designator,l_flow_schedule_rec.alternate_bom_designator)THENx_alternate_bom_designator:=l_x_flow_schedule_rec.alternate_bom_designator;ENDIF;IFNOTMRP_GLOBALS.Equal(l_x_flow_schedule_rec.alternate_routing_desig,l_flow_schedule_rec.alternate_routing_desig)THENx_alternate_routing_desig:=l_x_flow_schedule_rec.alternate_routing_desig;ENDIF;正例:PROCEDUREget_next_handle(itemtypeINVARCHAR2,itemkeyINVARCHAR2,actidINNUMBER,funcmodeINVARCHAR2,〖规则3-4〗循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。【规则3-5】函数、过程、包声明时,参数类型和参数名不允许分行书写。依照美观易懂原则,参数比较多时,可以换行。PLSQL编码规-细则第8页共25页resultoutOUTVARCHAR2);正例:l_pageNUMBER:=1;l_lineNUMBER:=0;反例:l_pageNUMBER:=1;l_lineNUMBER:=0;正例:DECLARE…;BEGIN…;EXCEPTIONWHENOTHERSTHENNULL;END;说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐。正例:Clear_Block(NO_COMMIT);//正确【规则3-6】不允许把多个短语句写在一行中,即一行只写一条语句。【规则3-7】宣示格式DECLARE、BEGIN、EXCEPTION和END语句总是独占一行。【规则3-8】对齐只使用空格键,不使用TAB键。【规则3-9】在开始括号“(”与下一个字符之间不允许插入空格,同样,在结束括号“)”与前一个字符之间也不允许插入空格PLSQL编码规-细则第9页共25页反例:Clear_Block(NO_COMMIT);//错误4注释注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。正例:/*+===========================================================================+版权信息:版权所有(C)2004,XXXX有限公司文件名称:版本号:创建者:创建日期:内容摘要:说明此程序文件完成的主要功能,与其他模块或函数的