存储过程编写规范【DB2-SQL】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档编号:ETL-11-T-2008
DB2 SQL及存储过程编写规范
当前版本:V1.0
版本日期:2009年08月15日
文件信息
修订记录
文件审核/审批
此文件需如下审核
文档分发
此文档将分发至如下个人或机构
1引言
1.1 目的
本标准是针对IBM DB2数据库SQL编写设计而起草的开发规范;同时,也作为各项目ETL组评审ETL任务开发质量的标准之一。
本标准将作为项目规范开发系列之一,并且需要在项目实施工作中不断改进和完善,保障规范能够真正的提高质量和效率。
引言
1.2 总则
整个系统中ETL开发的编码,包括基于封装的程序包中的代码,在对象的命名和使用、程序的注释和排版,都应当注重规范
在编码的过程中,应时刻牢记优化的重要性,对重要程序块或程序包需要注明其逻辑结构。在必要的时候,还应进行代码评审
本规范适用各IBM DB2数据库和项目ETL开发的程序包
应用于系统基于数据库的ETL模块开发并对应用集市相关开发提供参考与指导1.3 预期读者
项目管理人员
软件设计人员
软件编程人员
质量控制人员
软件维护人员
1.4 术语和定义
描述术语
本文档采用以下的术语描述:
规范:编程时强制必须遵守的原则标准:量化的规范。
说明:对此规则或建议进行必要的说明和解释。
示例:对此规则或建议给出适当的例子。
编码术语
编码(Coding)
关键字(Keyword)
函数(Function)
存储过程(Procedure)
变量(Variable)
游标(Cursor)
ETL(Extraction、Translation、Loading)
2编码规范
2.1 命名规范
对象命名不能超过30个英文字母,前缀和单词之间用下划线分隔,尽量不采用汉语拼音,使用英文单词或公认单词缩写,单词缩写可通过去掉“元音”
形成。
所有数据库对象(表、视图、存储过程)、关键字和系统函数、数据类型大写;自定义变量、游标小写。
命名的组成只能使用26个英文字母、下划线或阿拉伯数字,不能使用汉字。 名称具有复数意义时,使用名词的正确的复数形式
当一个SQL 语句中涉及到多个表时,始终使用表名别名来限定字段名。这使其他人阅读起来更清楚,避免了含义模糊的引用。
一般情况下,列名称不应包含表名或者表名的任何形式,列名不允许使用统
一的前缀。
一个目标表对应一个JOB,存储过程JOB命名为“P_”+表名。
变量以小写“v_”开头。
用户Schema不允许使用系统Schema。
2.2 抽取加载策略
如下表所示,下表为常见的抽取与加载方式,
2.3 作业接口规范
为了ETL的统一管理与监控,需要对每个DB2的ETL作业的接口进行规范。示例:
CREATE PROCEDURE db2inst1.P_B_CI_FINANCE_DA TA_CMS
(
IN "I_TX_DATE" CHARACTER(10),
OUT "O_ERR_NUM" INTEGER,
OUT "O_ERR_MSG" V ARCHAR(300)
)
如上所示,每个存储过程由3个参数组成
输入参数I_TX_DA TE:为ETL的批次日期。
输出参数O_ERR_NUM:JOB正常结束返回0,错误时返回DB2的错误SQL代码。
输出参数O_ERR_MSG:JOB自定义消息,正常时返回“处理成功”,如果出错会返回出错的步骤与错误消息。
2.4 变量定义规范
⏹所有的变量定义需在BEGIN与异常处理之间,必须要有注释。
示例:
⏹存储过程中确定长度的变量使用CHAR类型,存储过程中不确定长度的字符变量推荐使
用变长的VARCHAR。
2.5 作业容错处理规范
每个作业需要做容错处理,如下所示,每个作业需要使用统一的容错处理机制。
2.6 作业SQL规范
如下所示,每个字段需要加中文注释,一个字段一行,在字段前面加逗号,关键字后面对齐。
2.7 作业初始化规范
全局变量的初始化紧跟异常处理之后定义。
2.8 作业日志规范
2.8.1作业日志
每个作业,都需要有日志记录。DB2的作业日志将使用统一的接口,模版如下:
2.8.2作业详细日志
作业中的每个步骤,都需要有详细日志记录。DB2的详细作业日志将使用统一的接口,模版如下:
2.9 注释规范
注释的内容要清楚、明了,含义准确,无二义性。
开始注释,主要列出文件名,编写日期,程序功能以及修改记录等。
⏹单行注释
示例:
对变量的定义和分支语句(条件分支、循环分支等)必须在语句前编写注释。通过对函数、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。
⏹除一般描述性注释外,对于脚本中的复杂算法同样应有对此算法的说明性描
述。
⏹可通过注释来为脚本的功能分段(使用较醒目的标记,通常是一个较长的符
号串),使程序更易于阅读。
2.10 排版规范
⏹代码缩进均使用2个‘空格’,不要使用‘Tab’。
⏹脚本的代码分段一般使用1个空白行,功能性分段使用2个空白行。语句书
写规范
⏹存储过程中声明与过程代码的顺序
P1:BEGIN
变量声明(所有变量,包括异常处理中所使用的变量)
游标声明