规范_PLSQL编码.doc_第1页
规范_PLSQL编码.doc_第2页
规范_PLSQL编码.doc_第3页
规范_PLSQL编码.doc_第4页
规范_PLSQL编码.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文档状态 文档编号 规范 PL SQL 编 码 编 撰 编撰日期 2006 5 21 保密级别 机密 Draft Released Modifing 文档版本 2 0 0 PL SQLPL SQL 编码规范编码规范 XXXXXX 信息技术公司信息技术公司 PAGE 2 OF 11 PL SQL 编码规范 版版 本本 历历 史史 日期日期版本版本说明说明作者作者 2006 04 080 0 1 初稿 2006 04 301 0 0 咨询公司审计通过 正式发布 2006 05 212 0 0 增加系统集成项目过程 PAGE 3 OF 11 PL SQL 编码规范 目目 录录 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 PAGE 4 OF 11 PL SQL 编码规范 PL SQLPL 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 整体风格整体风格 缩进缩进 缩进建议以四个空格为单位 例子 Declare v loopCounter integer 1 begin Loop end loop PAGE 5 OF 11 PL SQL 编码规范 end 空格空格 原则上变量 常量数据和函数在其类型 修饰名称之间适当空格并据情况对齐 对齐对齐 原则上关系密切的行应对齐 对齐包括类型 修饰 名称 参数等各部分对齐 另每一行的长度 不应超过屏幕太多 必要时适当换行 换行时尽可能在 处或运算符处 例如 Type t StudentRecord is Record FirstName Varchar2 10 LastName Varchar2 10 CurrentCredits Number 3 v Student t StudentRecord 空行空行 不应该存在无规则的空行 比如说连续十个空行 程序文件结构各部分之间空两行 若不必要也 可只空一行 各函数实现之间一般空两行 由于每个函数还要有函数说明注释 故通常只需空一行或 不空 但对于没有函数说明的情况至少应再空一行 注释注释 注释是软件可读性的具体体现 程序注释量一般占程序编码量的 20 软件工程要求不少于 20 代码长度代码长度 对于每一个函数建议尽可能控制其代码合理的长度 50 行左右 超过 50 行的代码要重新考虑 将其拆分为两个或两个以上的函数 超长的语句应该在一个逗号或者一个操作符后折行 3 3 过程和函数编写风格过程和函数编写风格 PL SQL 中的函数和过程 通常称为子程序 是 PL SQL 块的一种特殊类型 这种类型的子程序 可以以编译的形式存放在数据库中 并为后续的程序块调用 PAGE 6 OF 11 PL SQL 编码规范 函数和过程的命名函数和过程的命名 通常 函数和过程的命名是以能表达函数和过程的动作意义为原则 可以是由动词打头 然后跟 上表示动作对象的名词 各单词的首字母应该大写 另外 还有一些函数命名的通用规则 如取数 则用 Get 打头 然后跟上要取的对象的名字 设置数 则用 Set 打头 然后跟上要设的对象的名字 而对象中为了响应消息进行动作的函数 可以命名为 On 打头 然后是相应的消息的名称 进行主动 动作的函数 可以命名为 Do 打头 然后是相应的动作名称 函数格式函数格式 例如 Create and Replace Function Balance acct id INTEGER RETURN REAL IS acct bal REAL BEGIN SELECT bal INTO acct bal FROM accts WHERE acct no acct id RETURN acct bal END Balance 过程格式过程格式 例如 Create or Replace PROCEDURE Raise salary emp id INTEGER amount REAL IS current salary REAL salary missing EXCEPTION BEGIN SELECT sal INTO current salary FROM emp WHERE empno emp id IF current salary IS NULL THEN RAISE salary missing ELSE UPDATE emp SET sal sal amount WHERE empno emp id END IF EXCEPTION WHEN NO DATA FOUND THEN INSERT INTO emp audit VALUES emp id No such number WHEN salary missing THEN INSERT INTO emp audit VALUES emp id Salary is null END Raise salary PAGE 7 OF 11 PL SQL 编码规范 3 4 包的编写风格包的编写风格 PL SQL 子程序可以和变量与类型共同组成包 PL SQL 的包由两部分组成 即说明部分和包体 一个包可以带有多个相关的过程 包的命名包的命名 包的命名与过程和函数的命名类似 需要表达包实现的功能为目的 可以是由动词打头 然后跟 上表示动作对象的名词 各单词的首字母应该大写 包的格式包的格式 例如 CREATE OR REPLACE PACKAGE emp actions AS spec TYPE EmpRecTyp IS RECORD emp id INT salary REAL CURSOR desc salary RETURN EmpRecTyp PROCEDURE hire employee ename VARCHAR2 job VARCHAR2 mgr NUMBER sal NUMBER comm NUMBER deptno NUMBER PROCEDURE fire employee emp id NUMBER END emp actions CREATE OR REPLACE PACKAGE BODY emp actions AS body CURSOR desc salary RETURN EmpRecTyp IS SELECT empno sal FROM emp ORDER BY sal DESC PROCEDURE hire employee ename VARCHAR2 job VARCHAR2 mgr NUMBER sal NUMBER comm NUMBER deptno NUMBER IS BEGIN INSERT INTO emp VALUES empno seq NEXTVAL ename job mgr SYSDATE sal comm deptno END hire employee PROCEDURE fire employee emp id NUMBER IS BEGIN DELETE FROM emp WHERE empno emp id END fire employee PAGE 8 OF 11 PL SQL 编码规范 END emp actions 3 5 触发器的编写风格触发器的编写风格 触发器类似于过程和函数 它们都是具有声明部分 执行部分和异常处理部分的命名 PL SQL 块 象包一样 触发器必须在数据库中以独立对象的身份存储 并且不能与包和块具有本地关系 过程是 显示地通过过程调用从其它块中执行的 同时 过程调用可以传递参数 与之相反 触发器是在事件 发生时隐式的运行的 并且触发器不能接收参数 触发器的命名触发器的命名 触发器的命名与过程和函数的命名类似 需要表达触发器实现的功能为目的 可以是由动词打头 然后跟上表示动作对象的名词 各单词的首字母应该大写 用 Trg 作为触发器的前缀 触发器的格式触发器的格式 例如 Create or Replace Trigger Trg GenerateStudentID Before Insert or Update on Students For Each Row Begin Select Stuendts sequence nextval into new ID From dual End GenearateStudentID 3 6 标识符命名规范标识符命名规范 对于各种标识符的定义都有一个共同点 就是应该使用有实际意义的英文单词或英文单词的缩写 不要使用简单但没有意义的字串 尽可能不使用阿拉伯数字 最好不使用中文拼音的首字母 如这样 的名称是不提倡的 Value1 Value2 Value3 Value4 变量命名规范变量命名规范 变量名的前缀 在数据库字段的命名中已经用一位字符的前缀来表明字段的数据类型 为了与数据库字 段加以区分 在变量名前加 v 作为区分 简单变量命名原则 用一位字符缩写作为变量命名的前缀 a 数字型变量 变量类型 前缀 示例 integeriv iCount long l v lotal number 整型 iv iCnt PAGE 9 OF 11 PL SQL 编码规范 number 浮点 fv fspeed b 字符型变量 变量类型 前缀 示例 char c v cMove varchar2 c v cResult c 日期型变量 变量类型 前缀 示例 date d v dStartDate d 布尔型变量 变量类型 前缀 示例 booleanb v bWriteFlag 游标命名原则 用 cur 作为游标名的前缀 例如 Cursor Cur Students is Select first name last name From students 记录命名原则 用 rcd 作为记录名的前缀 DECLARE TYPE DeptRec IS RECORD dept id dept deptno TYPE dept name VARCHAR2 14 dept loc VARCHAR2 13 rcd Dept DeptRec 常量命名规范常量命名规范 用 C 作为常量名的前缀 表命名规范表命名规范 PL SQL 程序中把多个变量作为一个整体来处理 这种数据类型成为表 用 tab 作为表的前缀 索引表 索引表 Index by table 的语法类似于 C 语言或 Java 语言的数组 下面是定义索引表类型的 通用语法 Type Tabletype is Table of type Index by Binary Integer 例如 TYPE Charactertab is Table of Varchar2 10 Index by Binary Integer TabCharactersCharactertab PAGE 10 OF 11 PL SQL 编码规范 嵌套表 嵌套表的基本功能与索引表类似 可以把嵌套表看成是带有两列 key 和 value 的数据库表 通用语法 Type table name is Table of Table type 例如 Declare 基于一个对象类型定义一个嵌套表类型 Type ClassTab is Table of Class 变长数组 变长数组是类似于 C 或 Java 语言中的数组的数据类型 通用语法 Type type name is VARRY VARYING ARRY maximum size of element type NOT NULL 例如 Declare Type NumberList is Varry 10 number 3 Not Null Type StudentList is Varry 100 of studen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论