您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > ORACLE存储过程编码规范
ORACLE存储过程编码规范1.1变量规范变量名、常量名、参数名、函数名、存储过程名、包名等所有对象全部用英文拼写,不允许用汉语拼音,多个单词间用下划线分割。全局常量全部用大写,全局变量全部用小写,且全局变量尽量避免使用。局部变量全部小写,使用“v_”开头,输入参数以“i_”开头,输出参数以“o_”开头,输入输出参数用io_开头。游标的定义:游标统一用前缀“cur_”命名当变量代表列时,使用%TYPE属性,当变量实际上表示数据库表的某列数据时,为避免数据库结构修改对变量的影响,应统一使用%TYPE属性对变量命名1.2显示游标规范外部查询的多行数据返回使用游标进行处理,通过传递游标变量的形式返回数据到外部接口,由外部程序自行FETCH数据。打开游标前,必须显式检查游标的%ISOPEN属性。使用FETCH语句后,要立即检查%NOTFOUND属性,以便正常终止游标FETCH循环。无论PL/SQL程序是正常终止还是出错退出,都要关闭所有已打开的游标。在出错退出时,应该在其异常处理部分管理所有游标,这可以释放一部分的系统资源1.3事务处理规范在需要分割事务以使主事务的提交或者回滚独立于子事务的提交及回滚时,应使用自动提交事务。所有的存储过程均统一在结束处统一COMMIT或者ROLLBACK。1.4错误处理规范凡是涉及到表操作(insert,update,select,delete)的sql语句,都必须进行错误捕捉,不能将错误带到后面的语句从表中SELECT数据INTO到指定变量中的SQL语句,应严格区分NO_DATA_FOUND和TOO_MANY_ROWS的错误,并将相应错误信息填入错误信息NO_DATA_FOUND多数为查询条件问题导致无数据返回(用户级错误)TOO_MANY_ROWS应该是数据表内数据异常导致(系统级错误)所有存储过程(函数)的统一出口一律在存储过程的结束部分,不允许中间返回在每一个异常处理部分,都要定义WHENOTHER子程序,以便捕获所有没有显示处理或其他类型的异常所有程序中捕获到的错误,均转换成对应的errcode,errmsg,通过输出参数返回给调用者,所有存储过程(函数)结束前应统一捕获系统异常在每个存储过程(函数)的入口处统一先将返回错误代码(errCode)设置为-1,功能处理成功结束后再将错误代码(errCode)设置为0(成功),避免程序过程中因错误未能正确捕获,导致功能未能完成,而程序却成功返回的情况出现1.5书写规范PL/SQL语句的所有表名、字段名遵照数据字典的定义,系统保留字、内置函数名、PL/SQL保留字、所有脚本全部大写。连接符OR、IN、AND、以及=、=、=等前后加上一个空格。对较为复杂的SQL语句加上注释,说明算法、功能。注释风格:注释单独成行、放在语句前面。应对不易理解的分支条件表达式加注释;对重要的计算应说明其功能;过长的函数实现,应将其语句按实现的功能分段加以概括性说明;常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围可采用单行/多行注释。(--或/**/方式)TAB统一定义为4个空格,建议使用PL/SQL作为SQL书写工具多表连接时,使用表的别名来引用列。一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进。1.6书写优化性能建议大量的排序操作影响系统性能,所以尽量减少ORDERBY和GROUPBY排序操作。如必须使用排序操作,请遵循如下规则排序尽量建立在有索引的列上如结果集不需唯一,使用UNIONALL代替UNION索引的使用尽量避免对索引列进行计算,这样索引会失效尽量注意比较值与索引列数据类型的一致性索引中,尽量避免使用NULL对于索引的比较,尽量避免使用!=查询列和排序列与索引列次序保持一致尽量避免相同语句由于书写格式的不同,而导致多次语法分析。查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面。任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。IN、OR子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。
本文标题:ORACLE存储过程编码规范
链接地址:https://www.777doc.com/doc-1917434 .html