DB2存储过程编写规范

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DB2存储过程编写规范

版本号:1.0

修订记录:

目录

第一章.前言 (3)

一.编写目的 (3)

二.编写背景 (4)

三.适用范围 (4)

第二章.程序结构 (5)

一.整体结构 (5)

二.程序说明 (6)

三.变量定义 (7)

四.异常错误处理 (7)

五.程序正文 (9)

第三章.命名规范 (10)

一.存储过程命名 (10)

二.参数命名 (10)

三.变量命名 (11)

四.临时表命名 (11)

第四章.书写格式 (12)

一.表达范式 (12)

二.段落缩进 (12)

三.段落间隔 (12)

四.程序注释 (13)

第五章.注意事项 (13)

一.固定的输出参数 (13)

二.临时表的使用 (14)

三.数据的插入 (14)

四.where 条件 (14)

五.count 的使用 (15)

六.全表删除 (15)

七.MERGE(UPSERT)的使用 (15)

第六章.附录A (15)

第一章.前言

一.编写目的

为了提高开发效率和程序的可读性,降低程序编写过程的出错率和重复劳动性,保持程序编写风格的一致性和连贯性,特定此规范。

二.编写背景

目前数据库工具有很多种,考虑到数据仓库开发的实用性,数据仓库开发工具选择了DB2。

三.适用范围

本规范适用于招商银行信息技术部开发人员以及运行管理人员,从事DB2存储过程开发的相关技术人必须按照此规范编写存储过程。

第二章.程序结构

一.整体结构

创建DB2存储过程必须按如下标准格式书写:

DROP PROCEDURE 模式名.过程名@

CREATE PROCEDURE 模式名.过程名

(

IN|OUT 输入|输出变量名输入|输出变量类型

[ , ... ]

)

SPECIFIC模式名.过程名

LANGUAGE SQL

/* 程序说明*/

BEGIN

<程序体>

END@

其中:

1)模式名是用来指定该存储过程属于哪个模式下的,默认为编译该过程的登录用户名,但为了过程的统一管理以及各系统间的相互区分,必须要指定一个模式名,模式名由过程所属项目设计中统一制

定。

2)存储过程可以参数不带参数,但如果带参数必须按照命名规则写出参数名,明确指定参数类型,并显示定义参数的输入输出性质。多个参数之间用换行和逗号分隔。

3)程序体一般包括变量定义、异常错误处理、程序正文等。

4)整个过程结束的标志符为@ 。

二.程序说明

程序说明是一种注释,是对存储过程作用、定义等的一种描述,在程序正文开始前必须有必要的说明,其具体内容包括:脚本名称:该存储过程名

功能:存储过程的作用与所要完成的目的

参数: 对输入输出参数进行必要的说明

调用:如何调用该过程,调用条件等,并写出一个调用的例子

返回值:将所有可能的返回值列出

创建时间:首次建立该过程的时间

作者:建立该过程的作者姓名

修改记录:依次记录每次修改的修改人、修改日期、修改原因等信息

三.变量定义

变量定义规则如下:

DECLARE 变量名1 变量类型[DEFAULT 默认值];

DECLARE 变量名2 变量类型[DEFAULT 默认值];

[…]

原则上每个变量的定义都要单独放置一行,并以分号结尾。

变量的定义应该出现在存储过程的程序体开始。

四.异常错误处理

异常错误处理是正文中必不可少的一部分,有着特定的作用。当过程执行出现警告或错误时需要通过异常处理来判断是否继续执行该过程。它通常在程序变量定义与程序正文之间进行定义。

一个规范的异常错误处理定义如下:

DECLARE s_rtcd INTEGER DEFAULT 0;

DECLARE s_rtst CHAR(5) DEFAULT '00000';

DECLARE s_text VARCHAR(200);

DECLARE s_prdname VARCHAR(30) DEFAULT '存储过程名';

DECLARE s_sysname VARCHAR(18) DEFAULT '运行系统名';

DECLARE s_errlvl char(4) DEFAULT '提示';

DECLARE SQLCODE INTEGER DEFAULT 0;

DECLARE SQLSTATE CHAR(5) DEFAULT '00000';

DECLARE error_message varchar(1024) DEFAULT '';

DECLARE continue HANDLER FOR SQLWARNING

BEGIN

GET DIAGNOSTICS EXCEPTION 1 error_message = MESSAGE_TEXT; set s_rtcd = SQLCODE;

set s_rtst = SQLSTATE;

set s_errlvl='警告';

if s_rtst <> '01003' then

set s_text = s_text||'--sqlcode: '||

cast(s_rtcd as char(5))||'--sqlstate: '||s_rtst;

insert into DWCTRL.CT_LOG_CT

values(I_Date, s_sysname , s_prdname,

CURRENT TIMESTAMP, s_errlvl, s_text, error_message);

end if ;

END;

DECLARE exit HANDLER FOR SQLEXCEPTION

BEGIN

GET DIAGNOSTICS EXCEPTION 1 error_message = MESSAGE_TEXT; set s_rtcd = SQLCODE;

相关文档
最新文档