PLSQL编码规范-细则
- 格式:doc
- 大小:229.00 KB
- 文档页数:25
Oracle应遵循的PL/SQL编码规则-PLSQL发布:2008-1-0319:57|作者:网络转载|来源:|查看:7次提高编写PL/SQL代码数量及质量的四个简单易行指导方针我从1990年就开始编写PL/SQL代码。
这意味着我已经编写了几万行的软件代码,但我确信,其中的绝大多数代码都非常拙劣,而且难以维护。
幸运地是,我发现找到并遵循编写出更好代码的新方法还为时不晚。
就是在去年,我的代码质量有了显著改进;这些改进主要是由于制定了一些简单的规则,并像纪律一样加以遵守。
本文为PL/SQL新手及有经验的开发人员提出了四条建议;遵守其中任何一条,你的代码质量都会有提高。
这四点建议都采纳,你可能会惊奇地猛然发现:你竟然是一个非常好的程序员,要远远超乎你的想象。
所有工作都独自完成我们很少有人是孤立工作的;大多数PL/SQL开发工作是在相对较大的机构中进行的。
但我们基本上还是在自己的小隔间里用自己的设备独自工作。
几乎没有PL/SQL开发小组进行正规的代码复查或系统测试。
我不可能通过这篇文章改变你们开发小组的基本状态。
因此,我仔细地选取出以下几点建议。
实施其中任何一点并不需征得管理人员同意。
不论你的小组是大是小,都不必让其中的每个人都赞同这些编码规则。
你只需按以下建议来改变你的本人的编码方式:1.严格遵循命名约定,好像它们就是你的生命支柱。
2.戒除编写SQL的嗜好:编写的SQL越少越好。
3.使执行部分短小:告别"意大利面条式的代码"。
4.找一位伙伴:非常赞同找个人来监督你的工作。
1.遵循命名约定如果你建立并严格遵循一套命名约定,特别是对于应用程序组件的,你就可以节省很多时间。
当然,遵循命名约定的想法并没有什么新意,你可能已经听烦了。
所以我并不提出什么宏伟的命名计划,而是给出一些非常具体而明确的约定,然后证明这些约定会多么有用。
前几个月我一直在为PL/SQL开发人员设计、构建一种新工具。
它名为Swy g(可以在中找到),可以帮助程序员完成代码的生成、测试及重用的工作。
代码风格标准一、命名规范1.1程序的命名规则要遵循公司文件要求。
1.2Function的命名以“f_”开头。
1.3Procedure的命名以“p_”开头。
1.4参数的命名以“p_”开头,如果是输入类型参数以“pi_”开头,如果是输出类型的参数以“po_”开头,如果是输入输出类型的参数以“pio_”开头。
1.5游标命名以“c_”开头,游标参数以“p_”开头。
1.6定义何种类型的变量就用变量类型关键词的首字母加下划线作为变量名的开头前缀。
1.7 Table 的别名不超过四个字母,取表名每个单词的第一个字母。
如果表名为三个单词时,前两个单词各取一个字母,最后一个取两个字母。
二、源程序书写规范2.1代码字体尽量使用小写,以便于识别。
2.2Function或procedure代码尽量控制在1000行以内,功能尽量单一,以便于阅读。
2.3建议select与后面的单词间隔三个空格,与下面的from、where等关键词尽量左对齐。
2.4sql语句嵌套时要注意,被嵌套的sql语句整体也要遵循2.3的格式要求。
2.5建议在代码中加一个变量v_process_state,以用来跟踪调试程序。
2.6在Exception处理中,要输出oracle的标准信息。
2.7Exception的处理还需要大家多提建议,共同完善,以便于程序的调试。
三、源程序注释规范3.1加注版本历史说明。
3.2加注包说明(――包名:中文说明)。
3.3包体代码中也要加注同3.1的版本历史说明。
3.4每一个function和procedure前都要加注释说明功能,难理解的参数也要加注释说明。
3.5游标前必须加注释说明。
3.6如果为合并游标,加说明以示区别。
3.7代码段的逻辑内容的注释,要用1,1.1,2.1,2.2等标题,要显示出代码的逻辑结构。
3.8修改代码时,加上修改人、修改内容的注释信息,尽量注释保留源代码。
Oracle PL/SQL 编程规范指南一、PL/SQL 编程规范之大小写就像在 SQL 中一样,PL / SQL 中是不区分大小写的。
其一般准则如下: 关键字(BEGIN, EXCEPTION, END, IF THEN ELSE,LOOP, END LOOP)、数据类型 (VARCHAR2, NUMBER)、内部函数(LEAST, SUBSTR)和用户定义的子程序(procedures, functions,packages),使用大写。
变量名以及 SQL 中的列名和表名,使用小写。
二、PL/SQL 编程规范之空白空白(空行和空格)在 PL/SQL 中如同在 SQL 中一样重要,因为它是提高代码可读性的一个重要因素。
换句话说,可以通过在代码中使用缩进来体现程序的逻辑结构。
以下是一些建议: 在等号或比较操作符的左右各留一个空格; 结构词(DECLARE, BEGIN, EXCEPTION, END,IF and END IF, LOOP and END LOOP) 居左排列。
另外,结构中的嵌套结构要缩进三个空格(使用空格键,而不是 Tab 键); 主要代码段之间用空行隔开; 把同一结构的不同逻辑部分分开写在独立的行, 即使这个结构很短。
例如, IF 和 THEN 被放在同一行, 而 ELSE 和 END IF 则放在独立的行。
三、PL/SQL 编程规范之命名约定使用以下前缀对于避免与关键字和表名列名相冲突是很有帮助的:v_变量名 con_常量名 i_输入参数名,o_输出参数名,io_输入输出参数名 c_游标名 或者 游标名_cur rc_ Ref Cursor 名 r_Record 名 或者 Record 名_rec FOR r_stud IN c_stud LOOP… FOR stud_rec IN stud_cur LOOP type_名称,名称_type (用户定义的类型) t_表名,表名_tab (PL/SQL 表) rec_Record 名,Record 名_rec (Record 变量) e_异常名 (用户定义的异常) 包的名称应该描述包内的存储过程和函数主要所完成的功能存储过程的名称应该描述该存储过程所执行的动作函数的名称应该描述所返回的变量例如:PACKAGE student_admin – admin 后缀可能是用于表示管理功能。
文档标识此版本文档的正式核准分发控制文档修订历史目录1. 文件组织 (1)2. 文件结构 (2)2.1. 文件的声明 (2)2.2. 包头(package header) (2)2.3. 包体(package body) (4)3. PL/SQL语言规范 (4)3.1. 变量规范 (4)3.2. 包规范 (4)3.3. 游标规范 (4)3.4. 事务处理规范 (5)3.5. 数据封装规范 (5)3.6. 数据访问规范 (5)3.7. 日志书写规范 (5)3.8. 错误处理规范 (6)3.9. 书写规范 (6)3.10. 书写优化性能建议 (7)3.11. 其他经验性规则 (8)4. 增量脚本维护规范 (9)4.1. 增量脚本回归规范 (9)4.2. 增量脚本文件命名规范 (9)4.3. 增量脚本内部处理规范 (9)1.文件组织PACKAGE脚本的文件名以pk_开头,扩展名为sql,每个包的包头和包体分开在不同文件中,包头文件名为(包名称)+”_hdr.sql”,包体文件名为(包名称)+”_bdy.sql”,一个文件中只能有一个包。
每个pkg里面的sp的功能点需参见客户需求测试脚本文件以功能点编号+后缀(ini) 命名2.文件结构2.1. 文件的声明文件的声明描述了文件和文件踪迹变化,位于文件的开头(参见示例1-1),主要内容有:(1)英文名称本存储过程(函数)的英文名(2)模块名称本存储过程(函数)的中文名称(3)模块功能本存储过程(函数)实现的功能简单描述( 4 ) 创建日期在此栏目中描述此模块作者,创建日期,版本号等信息( 5 ) 修改历史记录变更人,变更时间,变更内容( 6 ) 备注记录需要特殊描述或者提醒其他人注意的内容2.2. 包头(package header)包头声明了包中的各个部件(过程和函数)。
注意事项:一、过程名、函数名要用小写字母,过程名以pr_开头,函数名以fn_开头。
二、每个部件(过程或函数)要有说明,包括:模块名称、模块编号、模块功能、修改历史。
PLSQL开发规范Andrew.zhao1.PL/SQL编码规范1.1.使用工具Toad或PL/SQL Developer1.2.使用基表(视图)别名在SQL语句中为表或视图指定别名。
其命名规格以简短为原则,一般为基表或视图名称每一节单词的第一个字母,如mtl_system_items的别名一般指定为msi。
1.3.例外处理尽可能多的使用EXCEPTION捕捉各种例外,并返回用户可读懂的信息,如无法确定是否有其它例外,可在每个PL/SQL程序块的例外中加上WHEN OTHERS语句。
例外信息统一风格,定义统一的例外处理Package统一返回在哪个Package、Procedure中发生的例外对日志中的一些调试信息,通过参数设定是否需要输出语法如下:EXCEPTIONWHEN OTHERS THENFND_FILE.PUT_LINE(FND_FILE.OUTPUT,SQLCODE);FND_FILE.PUT_LINE(FND_FILE.OUTPUT,SQLERRM);END;1.4.注释PL/SQL有两种表示注释的方法,分别为’--’和’/*…*/’,对于多行或整段的注释一般采用后者,对于单行或行尾的注释一般采用前者。
以下从几个主要地方注释做个规定,力求统一。
注释风格:注释单独成行、放在语句前面。
应对不易理解的分支条件表达式加注释;对重要的计算应说明其功能;过长的函数实现,应将其语句按实现的功能分段加以概括性说明;常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围;可采用单行/多行注释。
(--或/**/方式)。
包、过程、函数注释(代码头信息注释规范)/*===============================================================*Copyright(C)CNC All rights reserved*===============================================================*Program Name:[Package Name]*Author:$OSUSER*Date:$DATE$TIME*Purpose:[Purpose]*Parameters:*In X--参数X的简要说明*Out Y--参数Y的简要说明*Called:*Called By:*Description:**Update History*Version Date Name Description*-----------------------------------------------------*V1.0$DATE$OSUSER Creation*===============================================================*/如增加包中的过程或函数,需在包的注释中的Update History中增加相应的信息。
3. 基本策略3.1 设计策略◆ 分类拆分数据量大的表。
对于经常使用的表(如某些参数表或代码对照表),由于其使用频率很高,要尽量减少表中的记录数量。
例如,银行的户主账表原来设计成一张表,虽然可以方便程序的设计与维护,但经过分析发现,由于数据量太大,会影响数据的迅速定位。
如果将户主账表分别设计为活期户主账、定期户主账及对公户主账等,则可以大大提高查询效率。
◆ 分区策略在拥有数500行以上的表时,采用分区策略。
◆ 索引设计。
对于大的数据库表,合理的索引能够提高整个数据库的操作效率。
在索引设计中,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。
例如,如果对一个5万多条记录的流水表以日期和流水号为序建立复合索引,由于在该表中日期的重复值接近整个表的记录数,用流水号进行查询所用的时间接近3秒;而如果以流水号为索引字段建立索引进行相同的查询,所用时间不到1秒。
因此在大型数据库设计中,只有进行合理的索引字段选择,才能有效提高整个数据库的操作效率。
◆ 有时候为了提高性能。
减少表的关联,恰当的数据冗余是允许的。
◆ 索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡◆ 为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象,确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上。
◆ 对于经常发生同时查询或频繁查询的表,最好把他放到不同的磁盘空间上4. 逻辑设计规范4.1 范式◆ 如果没有性能上的原因,应该使用关系数据库理论,达到较高的范式,避免数据冗余。
◆ 如果在数据量上与性能上无特别要求,考虑到实现的方便性可以有适当的数据冗余,但基本上要达到3NF。
4.2 表设计◆ 对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能。
如果表按某些字段进行增长,则采用按字段值范围进行范围分区;如果表按某个字段的几个关键值进行分布,则采用列表分区;对于静态表,则采用Hash分区或列表分区;在范围分区中,如果数据按某关键字段均衡分布,则采用子分区的复合分区方法。
oracle mysql 编码规则Oracle和MySQL是两个常用的关系型数据库管理系统,它们在编码规则方面有些不同。
下面我将为您介绍Oracle和MySQL的编码规则。
一、Oracle编码规则:1.字符集选择:Oracle支持多种字符集,如AL32UTF8、UTF8、ZHS16GBK等。
其中,AL32UTF8是Unicode编码的扩展,能够存储任何字符,建议使用AL32UTF8字符集,以适应全球化的需求。
2.字符长度限制:Oracle中的VARCHAR2类型的字符长度限制为4000字节,在AL32UTF8字符集下,这对应于4000个ASCII字符或者1333个汉字。
如果需要存储更多字符,可以使用CLOB类型。
3.使用国际化支持函数:Oracle提供了丰富的国际化支持函数,如NLS_LOWER、NLS_UPPER、NLS_INITCAP等,可以在各种字符集之间进行转换和比较。
4.字符编码转换:在涉及到不同字符集之间的数据传输和处理时,需要进行字符编码转换,Oracle提供了一系列的函数和工具来实现字符编码转换,如CONVERT、NLS_CHARSET_ID等。
5.字符串比较规则:在Oracle中,字符串比较默认是不区分大小写的,如果需要进行区分大小写的比较,可以使用BINARY_CI规则或者设置NLS_SORT参数。
6.字符集的设置:在创建数据库时,需要设置数据库的字符集,可以在CREATE DATABASE语句中指定字符集,也可以使用ALTER DATABASE语句来修改数据库的字符集。
二、MySQL编码规则:1.字符集选择:MySQL支持多种字符集,如utf8mb4、utf8、gbk 等。
其中,utf8mb4是Unicode编码的超集,能够存储任何字符,建议使用utf8mb4字符集,以适应全球化的需求。
2.字符长度限制:MySQL中的VARCHAR类型的字符长度限制为65535字节,在utf8mb4字符集下,这对应于65535个ASCII字符或者21845个汉字。
PLSQL编码规-细则文件编号:版本:1.1拟制审核会签标准化批准XXXXXX公司XXXIT部目录前言 (4)1范围 (5)2术语和定义 (5)2.1原则 (5)2.2规则 (5)2.3建议 (5)2.4说明 (5)2.5正例 (5)2.6反例 (5)3代码布局 (5)4注释 (9)5命名规则 (14)6可读性 (18)7变量 (19)8函数与过程 (20)9程序效率 (22)10异常处理 (23)11数据库触发器标准 (24)12SQL性能优化技术 (24)版本变更记录圆珠笔填写,不得涂改。
<本模板中用“< >”括起来的内容包括本段,是编写指导,在最终的文档中应予以删除。
其它内容应予以保留。
如果某节内容无需填写,则在该节下写“无”,而不要将本节删除或不填写任何内容(留白将无法判断:是本节内容无需填写还是因为疏忽而忘了填写。
)>前言编码规范包括总则和细则两部分。
总则部分是对编码的总体性规范要求,适用于多种编码语言;细则部分是在总则的规范要求下,针对具体语言的特点而提出的规范要求。
本规范是编码规范的细则部分,适用于PLSQL编程语言。
编写本规范的目的是为了进一步规范PLSQL软件编程风格,提高软件源程序的可读性、可靠性和可重用性,确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改进以前的工作,提高软件源程序的质量和可维护性,减少软件维护成本。
本规范的内容包括:排版、注释、标识符命名、可读性、变量、结构、函数&过程、可测性、程序效率、质量保证、代码编辑&编译&审查、代码测试&维护等。
规范最后给出了一个编程实例供软件人员参考。
本规范分成规则性和建议性两种:对于规则性规范,要求所有软件开发人员严格执行;对于建议性规范,各项目编程人员可以根据实际情况选择执行。
自本规范实施之日起,以后新编写的和修改的代码均应执行本规范。
PL/SQL编码规范1. PL/SQL编码规范PL/SQL对大小写不敏感,故切忌使用大小写区分变量和其它用户定义的元素。
为使代码具有可读性,可遵循以下简单的大小写规则以便在源代码中区分这些元素:✧全部保留字、Oracle提供的程序包、内建函数、用户定义的常数、Oracle和用户定义的数据类型,以及模式名均采用大写;✧所有程序命名和过程名称全部采用大写。
✧修改前必须从CVS去取最新的版本去,同时如存在多个人同时修改的情况,请注意协调分工,注意事后合并版本。
✧所有的包和过程等PL/SQL脚本,请将最新的放在CVS上,\JCN\20Engineering\20.40SourceCode\PLSQL\这个目录下。
(FUNCTION和PACKAGE等要分开放)文件的路径如下图片所示如果是改修的,请到下图的Baseline下去取文件,然后保存到上述路径:✧PL/SQL的包和包体将采用一个文件,名称为包的名字,保留到CVS将,请不要将包和包体分开为两个文件update到CVS。
✧在提交到CVS上去以前,请清理掉临时的变量,和编码的时候采用的临时表等,并请格式化你的代码,不定期将会对代码进行review。
1.1. PL/SQL程序命名规范1.无论是PL/SQL对象还是PL/SQL对象内部用的变量和游标等,都必须能从名称上能让人理解变量和游标的含义,而且一定要做好注释。
2.传到CVS上的文本文件全部采用’.sql’作为文件名的后缀1.1.1. 存储过程存储过程的命名必须符合USP_DETAILNAME格式,其中 USP表示是存储过程,DETAILNAME 是与存储过程意义相关的意义的名称,如:USP_BUSINESS_RULE。
1.1.2. 软件包软件包的命名必须符合PKG_ DETAILNAME格式,其中 PKG表示是软件包, DETAILNAME 是与软件包意义相关的意义的名称,例如:PKG_SORCE_ALL。
SQL&PL/SQL编程规范一、 Sql&PL/SQL书写规范:1、语句中出现的所有表名、字段名全部小写,系统保留字、内置函数名、Sql保留字大写。
2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。
3、对较为复杂的sql语句加上注释,说明算法、功能。
注释风格:注释单独成行、放在语句前面。
(1) 应对不易理解的分支条件表达式加注释;(2) 对重要的计算应说明其功能;(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;(4) 每条SQL语句均应有注释说明(表名、字段名)。
(5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)(6) 可采用单行/多行注释。
(-- 或 /* */ 方式)4、 SQL语句的缩进风格(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进(2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。
5、多表连接时,使用表的别名来引用列。
6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;7、变量令名不能超出ORACLE的限制(30个字符),令名要规范,要用英文令名,从变量上能看到变量的作用,如g名称全局变量m名称局部变量c名称光标p名称参数8、查找数据库表或视图时,只能取出确实需要的那些字段,不要使用*来代替所有列名。
要清楚明白地使用列名,而不能使用列的序号。
9、功能相似的过程和函数,尽量写到同一个包中,加强管理。
如例(1)二、书写优化性能建议1、避免嵌套连接。
例如:A = B and B = C and C = D2、where条件中尽量减少使用常量比较,改用主机变量3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from 后边最后一个表)。
4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。
RD 中国民航信息网络股份有限公司制度研发中心PL_SQL编码规范文件编号:版本号:VER 1.0.0编制部门:中国民航信息网络股份有限公司研发中心产品开发部编制人:章秀静编制日期:2009.04.10审批人:XXX 审批日期:2009.**.**变更记录目录目录 (III)1.编写目的 (1)2.适用范围 (1)3.规范内容 (1)3.1 编码风格 (2)一般风格 (2)DML风格 (2)控制语句 (4)参数声明 (5)记录类型 (6)注释 (6)3.2 命名规范 (7)变量 (7)参数 (7)公用函数(过程) (8)数据库对象【参考】 (8)3.3 设计规范 (9)私用函数(过程) (9)数据处理函数/过程 (9)打包 (9)附件1:样本代码 (10)附件2:PL/SQL配置参数 (12)1.编写目的提高代码的可读性;提高编码可靠性;提高代码的可管理性。
2.适用范围以Oracle数据库为后台存储过程的软件开发工作;推荐工具为:PL/SQL developer;推荐原因:可自动应用编码规范,无须手工操作;本文以PL/SQL develper的自动化工具为要求和演示;本规范的代码样本见附件1;可自动应用于PL/SQL developer的配置见附件2。
3.规范内容3.1 编码风格一般风格DML风格DML命令中的元素排列可视需要选择:1.每行一个元素(本规范默认)2.每行固定数量元素注释1.记录“日期YYYYMMDD”、“程序员ID”、“变更申请单位置”、“基线版本”和“注释内容”,不限制顺序。
2.如果没有“变更申请单位置”则可省略,否则不能省略。
3.“注释内容”通常写修改的原因。
可省略。
[例] -- 20070415 ZT 4.4.0.1 增加字段[例] -- 20070415 ZT DEBUG[例] -- 20061220 GJ V4.2.0 UPL-BASE表日期字段类型变化:DATE->NUMBER(8)4.解释性注释:--在要解释的语句后跟注释内容即可3.2 命名规范变量2.和某字段关系密切的变量在定义时和该字段保持一致[例] vc_rdmscp MDP_ADJ_README.RDMSCP%TYPE参数1.输入参数前缀为:i_[例] i_vc_group in varchar22.输出参数前缀为:o_[例] o_vc_result out varchar23.前缀往后请遵守“变量”规范公用函数(过程)1.从函数(过程)名字面上能识别函数的功能。
PL/PL/SQL SQL 编程编程规范规范规范1目的........................................................................................................................................... 2 2 应用范围 ................................................................................................................................... 2 3 PL/SQL 变量规范 ...................................................................................................................... 2 4书写规范 ................................................................................................................................... 3 4.1 大小写风格 ................................................................................................................... 3 4.2 缩进风格 ....................................................................................................................... 3 4.3 空格及换行 ................................................................................................................... 6 4.4 创建过程/函数/包 ....................................................................................................... 8 5 注释规范 ................................................................................................................................... 9 6常用语法 ................................................................................................................................. 12 6.1 变量声明 ..................................................................................................................... 12 6.2 返回值 ......................................................................................................................... 12 6.3 符号 ............................................................................................................................. 13 6.4 包的使用 ..................................................................................................................... 13 6.5 绑定变量 ..................................................................................................................... 13 6.6 异常处理 ..................................................................................................................... 14 6.7 事务控制 ..................................................................................................................... 15 6.8 游标使用 ..................................................................................................................... 15 7注意事项 ................................................................................................................................. 17 7.1 避免通过DUAL 表赋值。
版本历史目录1目的 (4)2范围 (4)3规范内容 (4)3.1概述PL/SQL语言的特点 (4)3.2整体风格 (4)3.3过程和函数编写风格 (5)3.4包的编写风格 (6)3.5触发器的编写风格 (7)3.6标识符命名规范 (8)3.7注释要求 (10)3.8标识符声明 (11)PL/SQL编码规范1目的为了保证所每个项目组编写出的程序都符合相同的规范,便于理解和维护,便于检查、减少出错概率,有助于成员间交流,保证一致性、统一性而建立的PL/SQL程序编码规范。
2范围该规范适用于所有使用Oracle数据库基于PL/SQL开发的项目。
3规范内容3.1概述PL/SQL语言的特点PL/SQL 是一种高级数据库程序设计语言,它是专门用于在各种环境下对Oracle数据库进行访问。
由于该语言集成于数据库服务其中,所以PL/SQL代码可以对数据进行快速高效的处理。
SQL是先进的第四代程序设计语言,使用这种语言只需对要完成的任务进行描述,而不必指定实现任务的具体方法。
PL/SQL代表面向过程化的语言与SQL语言的结合,是在SQL语言中扩充了面向过程语言中使用的程序结构,如:●变量和类型(即可以预定义也可以由用户定义)●控制语句(如IF-THEN - ELSE)和循环●过程和函数●对象类型和方法PL/SQL语言实现了将过程结构与Oracle SQL的无缝集成,从而为用户提供了一种功能强大的结构化程序设计语言。
3.2 整体风格缩进缩进建议以四个空格为单位。
例子:Declarev_loopCounter integer := 1;beginLoop…end loop;end;空格原则上变量、常量数据和函数在其类型,修饰名称之间适当空格并据情况对齐。
对齐原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。
另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在","处或运算符处。
PLSQL代码编写规则一标识符命名规则当在中使用标识符定义变量、常量时.标积符名称必须以字符开始,并且长度不能超过30个字符.为了提高程序的可读性,oracle建议用户按照以下规则定义各种标识符:1.当定义变量时,建议使用v_作为前缀,例如v一al,vjob 等。
.当定义常量时,建议使用c_作为前缀,例如cee印teo 2.当定义游标时,建议使用_cursor作为后缀,例红emP--cursor·.当定义例外时,建议使用e--作为前缀,例红勺川egrity 3.当定.义PusQL表类型时,建议使用夕b佬type作为后缀,例如salestablc--type。
.当定义PuSQL表变量时,建议使用少bl。
作为后缀,例如sal--t的le。
4.当定义PL/SQL记录类型时,建议使用_record_tyPe作为后缀,例如。
nP-recordty沐,5.当定义pL/SQL记录变量时,建议使用_reco闭作为后缀,例如empjccord。
2,大小写规贝,l当在P口SQL块中编写SOL语句和PL,ISQL语句时,语句既可以使用大写格式,也可以使用小写格式。
但是,为了提高程序的可读性和性能,Oracle建议用户按风以下大小写规则编写代码:.SQL关键字采用大写格式,例如sELEcT;uPDATE,sET,节爪ERE等。
.PL/SQL关键字采用大写格式,例如DECLA只卫,BEGIN,END等。
.数据类型采用人写格式,例如JN丁,vARCHARZ,DATE等。
.标识符和参数采用小写格式,例如v-sal.c--ra妞等。
.数据库对象和列采用小写格式,例如emp,/doc/4e17195823.html,~等。
2.标识符标识符用于指定P口SQL程序单元和程序项的名称。
通过使用标识符,可以定义常量、变量、例外、显式游杯、游标变量、参数、子程序以及包的名称。
当使用标识符定义PL侣QL程序项或程序单元时,必须要满足以下规则:.当便用标识特定义变量、常量时,每行只能定义一个标识符。
PLSQL编码规-细则文件编号:版本:1.1拟制审核会签标准化批准XXXXXX公司XXXIT部目录前言 (4)1范围 (5)2术语和定义 (5)2.1原则 (5)2.2规则 (5)2.3建议 (5)2.4说明 (5)2.5正例 (5)2.6反例 (5)3代码布局 (5)4注释 (9)5命名规则 (14)6可读性 (18)7变量 (19)8函数与过程 (20)9程序效率 (22)10异常处理 (23)11数据库触发器标准 (24)12SQL性能优化技术 (24)版本变更记录圆珠笔填写,不得涂改。
<本模板中用“< >”括起来的内容包括本段,是编写指导,在最终的文档中应予以删除。
其它内容应予以保留。
如果某节内容无需填写,则在该节下写“无”,而不要将本节删除或不填写任何内容(留白将无法判断:是本节内容无需填写还是因为疏忽而忘了填写。
)>前言编码规范包括总则和细则两部分。
总则部分是对编码的总体性规范要求,适用于多种编码语言;细则部分是在总则的规范要求下,针对具体语言的特点而提出的规范要求。
本规范是编码规范的细则部分,适用于PLSQL编程语言。
编写本规范的目的是为了进一步规范PLSQL软件编程风格,提高软件源程序的可读性、可靠性和可重用性,确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改进以前的工作,提高软件源程序的质量和可维护性,减少软件维护成本。
本规范的内容包括:排版、注释、标识符命名、可读性、变量、结构、函数&过程、可测性、程序效率、质量保证、代码编辑&编译&审查、代码测试&维护等。
规范最后给出了一个编程实例供软件人员参考。
本规范分成规则性和建议性两种:对于规则性规范,要求所有软件开发人员严格执行;对于建议性规范,各项目编程人员可以根据实际情况选择执行。
自本规范实施之日起,以后新编写的和修改的代码均应执行本规范。
1范围本标准规定了PLSQL语言的编程规范,主要包括排版、注释、标识符命名、可读性、变量、结构、函数&过程、可测性、程序效率、质量保证、代码编辑&编译&审查、代码测试&维护等。
本规范自生效之日起,对以后新编写的和修改的代码有约束力。
2术语和定义下列术语和定义适用于本标准。
2.1原则编程时应该坚持的指导思想。
2.2规则编程时必须遵守的约定。
2.3建议编程时必须加以考虑的约定。
2.4说明对此规则或建议的必要的解释。
2.5正例对此规则或建议给出的正确例子。
2.6反例对此规则或建议给出的反面例子。
3代码布局代码布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。
更重要的是,统一的程序布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。
同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。
因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且会涉及到产品质量,涉及到个人编程能力的提高,必须要引起重视。
一般源代码每行的字符数不得超过80,除非只剩下一个单词。
如一行源代码超过了80个字符,可在逗号和操作符后面开始换行,并相对第一行缩进2个空格,或相对当前行做调整。
正例:例1:BEGINSELECT SUM(quantity)INTO :zte_rpctq_safe_inventories.quantityFROM zte_rpct_onhandWHERE subinventory_id = :zte_rpctq_safe_inventories.subinventory_idAND inventory_item_id = :zte_rpctq_safe_inventories.inventory_item_id;EXCEPTIONWHEN NO_DATA_FOUND THEN:zte_rpctq_safe_inventories.quantity := NULL;END;例2:FUNCTION get_prod_config_cost(p_cutoff_date IN DATE,p_product_id IN NUMBER,p_inventory_item_id IN NUMBER) RETURN NUMBER;说明:对于由开发工具自动生成的代码可以有不一致。
说明:空行起着分隔程序段落的作用。
适当的空行可以使程序的布局更加清晰正例:BEGIN SELECT COUNT (*) INTO NORMAL FROM fnd_concurrent_requests W HERE status_code = 'C'; SELECT COUNT (*) INTO warning FROM fnd_concurrent_requests WHERE status_code = 'G'; SELECT COUNT (*) INTO error FROM fnd_concurrent_requests WHERE status_code = 'E';END;反例:如下例子不符合规范。
BEGIN SELECT COUNT (*) INTO NORMAL FROM fnd_concurrent_requests W HERE status_code = 'C'; SELECT COUNT (*) INTO warning FROM fnd_concurrent_requests WHERE status_code = 'G'; SELECT COUNT (*) INTO error FROM fnd_concurrent_requests WHERE status_code = 'E';END;正例:IF NOT MRP_GLOBALS .Equal (l_x_flow_schedule_rec .alternate_bom_designator , l_flow_schedule_rec .alternate_bom_designator ) THEN x_alternate_bom_designator := l_x_flow_schedule_rec .alternate_bom_designator ; END IF; IF NOT MRP_GLOBALS .Equal (l_x_flow_schedule_rec .alternate_routing_desig , l_flow_schedule_rec .alternate_routing_desig ) THEN x_alternate_routing_desig := l_x_flow_schedule_rec .alternate_routing_desig ; END IF;正例:PROCEDURE get_next_handle(itemtype IN VARCHAR2,itemkey IN VARCHAR2,actid IN NUMBER,funcmode IN VARCHAR2,resultout OUT VARCHAR2);l_page NUMBER := 1; l_line NUMBER := 0;反例:l_page NUMBER := 1; l_line NUMBER := 0;正例:DECLARE…;BEGIN…;EXCEPTIONWHEN OTHERS THENNULL;END;说明:以免用不同的编辑器阅读程序时,因TAB 键所设置的空格数目不同而造成程序布局不整齐。
正例:Clear_Block(NO_COMMIT); // 正确反例:Clear_Block( NO_COMMIT ); // 错误注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。
正例:/*+===========================================================================+ 版权信息:版权所有(C) 2004,XXXX有限公司文件名称:版本号:创建者:创建日期:内容摘要:<说明此程序文件完成的主要功能,与其他模块或函数的接口,独立或依赖等关系。
>功能列表:主要函数、过程列表,每条记录应包括函数、过程名及功能简要说明更新历史:更新历史记录列表,每条修改记录应包括更新日期、更新者及更新内容简述更新者更新日期更新内容+===========================================================================+*/正例:/*+===========================================================================+ 版权信息:版权所有(C) 2004,XXXX有限公司文件名称:创建者:创建日期:内容摘要:项描述本文件的内容、功能、内部各部分之间的关系及本文件与其它文件关系等功能列表:主要函数、过程列表,每条记录应包括函数、过程名及功能简要说明(包体可忽略)更新历史:更新历史记录列表,每条修改记录应包括更新日期、更新者及更新内容简述更新者更新日期更新内容+===========================================================================+*/正例:/*+===========================================================================+ 名 称:函数或存储过程名称内容摘要:函数或存储过程功能、性能等的描述调 用:被本函数、过程调用的函数清单被调用 :调用本函数、过程的函数清单创建者:被访问表:被访问的表(此项仅对于牵扯到数据库操作的程序)被更新表:被修改的表(此项仅对于牵扯到数据库操作的程序)输 入:输入参数说明,包括每个参数的作用、取值说明及参数间关系。
输 出:对输出参数的说明返回值 :返回值的说明其它:其它说明+===========================================================================+*/说明:修改代码应同时修改相应的注释,不再有用的注释要删除说明:错误的注释不但无益反而有害。
说明:在使用缩写时或之前,应对缩写进行必要的说明。