DB2存储过程快速入门.

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

1.1 SQL过程的结构

命名规则:

1、清洗过程名称命名:

PROC_业务主题_目标表(PROC_JY_KJYRLJB 交易主题的卡交易日类聚表)

2、函数名称命名:

PROC_业务主题_函数名(PROC_JY_GETYWZL 交易主题取得卡业务种类函数)

3、变量命名:

VAR_变量描述(VAR_YWZL 业务种类变量)

4、游标命名:

CUR_游标描述(CUR_KJYB 对卡交易表进行游标处理)

语法:

CREATE PROCEDURE 过程名称

(参数列表

DYNAMIC RESULT SETS 结果集数量

是否允许SQL

LANGUAGE SQL

BEGIN

SQL 过程体

END

范例“资产负债.sql ”中

第1行:Create Procedure admin.BalanceSheetDayly定义了过程名称

参数列表为Out ProcState varchar(100

其定义SQL 过程从客户应用获取,或返回客户应用的0个或多个参数,参数列表使用逗号侵害各个参数

参数类型有三种:

l IN 从客户应用检索值。其不能够在SQL 过程体中修改

l OUT 向客户应用返回值

l INOUT 从客户应用检索值,并返回值

省略了结果集数量的定义,default 为0。即表示不返回结果集。

省略了是否允许SQL 的说明。其值指出了存储过程是否会使用SQL 语句,如果使用,其类型如何:

l NO SQL 不能够执行任何SQL 语句

l COTAINS SQL 可以执行不会读取SQL 数据,也不会修改SQL 数据的SQL 语句

l READS SQL DATA 可以包含不会修改SQL 数据的SQL 语句

l MODIFIES SQL DATA 可以执行任何SQL 语句,除了不能够在存储过程中支持的语句以外。

第3~7行,为注释,标明此为SQL 过程,编写、最后修改时间。注释为“--”开始的行。第8行和最后一行199共同标识出SQL 过程体

过程体存储过程的逻辑内容,包括变量声明、条件控制、流控制语句、以及通过SQL

语句处理数据的过程。

另例:

CREATE PROCEDURE bbgs_to_testinfo (IN var0 INTEGER , out ret INTEGER , out ret_str varchar(5, OUT errorLabel CHAR(32

SPECIFIC bbgs_to_testinfo

RESULT SETS 1

LANGUAGE SQL

此定义为创建名为bbgs_to_testinfo的存储过程。它有4个参数:第一个IN 参数是INTEGER 类型,第一个OUT 参数是INTEGER 类型,第二个OUT 参数是VARCHAR(5类型,第三个OUT 参数是CHAR(32类型。指定的别名为

bbgs_to_testinfo,将返回一个结果集。

1.2 SQL过程体

1.2.1 声明、设置变量

第9~61行。

必须在SQL 过程体的第一部分中声明变量。必须指定惟一的标识符,声明SQL 数据类型、并且可以先把指定变量的初始值。变量声明的语法如下:

DECLARE 标识符 SQL 数据类型 [DEFAULT 默认值]

1、SQLCODE 、SQLSTATE 变量

13~14行。

用于在SQL 过程中处理错误和排错问题。它们的值代表了SQL 过程体中最后使用的SQL 过程体中最后使用的SQL 语句的返回值。

2、游标申明

37~49行。

declare curAsset cursor with hold for

3、条件处理器

50~61行。

当SQL 语句返回超过00000的SQLSTATE 值时,会产生一个条件,表示出现了错误、数据没有找到或者警告。

条件处理器可以决定SQL 过程将如何响应一个或多个已定义的条件或预定义条件组。其语法如下:

DECALRE 数据类型 HANDLER FOR 条件[,…]

其有三种处理类型:

l CONTINUE 处理器操作完成后,继续执行产生这个条件的语句之后的下一条语句。 l EXIT 处理器操作完成后,SQL 过程将终止,并将控制返回给调用者。

l UNDO 处理器操作执行之前,DB2将回滚SQL 过程中执行的SQL 操作。完成后,SQL 过程将终止,并将控制返回给调用者。

其预定义了3个类的条件:

l NOT FOUND 标识导致SQLCODE 值为+100或SQLSTATE 值为02000的条件。一般在使用SELECT 语句时出现。

l SQLEXCEPTION 标识导致SQLCODE 值为负的条件

l SQLWARNING 警告条件或导致SQLCODE>100的条件

1.2.2 控制结构流

常用的结构:

1、 SET

为输出参数或者SQL 变量赋值。

例如:

set at_end=0;(66行

set vProcState=char(0||'00000 Success'; (164行

set vBal302=vBal302+vBal;(89行

2、 IF

IF 条d

ELSEIF 条件2 THEN

ELSE

相关文档
最新文档