在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程
2009-12-27 00:00:00 来源:WEB开发网开始之前
关于本系列
随着 SOA 和基于 Web 的技术的流行,有越来越多的 XML 数据进出计算机系统。IBM DB2® 9 for z/OS® 对 pureXML® 的支持使得通过 SQL/XML 界面在 System z® 上存储和操纵 XML 更为容易。本教程是一个关于如何在 DB2 for z/OS 中使用 XML 的 系列 中的第三期。本系列介绍创建操纵 XML 数据的简单应用程序的不同方式。第 1 部分 给出一个示例应用程序,它基于一个可下载的 COBOL 存储过程。第 2 部分 展示如何通过 Universal Services 设置 Web 访问。
关于本教程
本教程描述如何使用 Rational Developer for System z 来开发操纵 XML 数据的 COBOL 存储过程。本教程展示所提供的 XML 模式支持,并提供创建和测试存储过程的逐步指导。
目标
本教程的目标是,论证使用 Rational Developer for System z (RDz) 开发用于处理 DB2 中的 pureXML 的 COBOL 应用程序有多么容易。
先决条件
本教程针对的是技能和经验为初中级的 COBOL 开发人员。读者应该对 XML 有一般了解,并具有 DB2 for z/OS 的工作知识。
系统需求
需要在 z/OS 上安装了以下软件:
DB2 9 for z/OS
IBM Enterprise COBOL for z/OS 4.1.0
Rational Developer for System z, Version 7.5 服务器
需要在笔记本上安装了以下软件:
Rational Developer for System z, Version 7.5 客户端
本教程假设已经在服务器和客户端配置好了 RDz,创建了到 z/OS 的连接,并且具有执行必要任务所需的授权。
什么是 Rational Developer for System z?
Rational Developer for System z (RDz) 是一个基于 Eclipse 的集成开发环境,对针对 z/OS 的各种不同应用程序的开发提供支持。
它由一个服务器部分和一个客户端部分组成,前者安装在 z/OS 上,后者安装在您的笔记本上并配置为与 z/OS 通信。
本教程展示如何创建操纵 DB2 for z/OS 中 XML 数据的 COBOL 存储过程。这通过 Data Perspective 来完成,参见 图 1。透视图是一组资源管理器和窗口,各自都有一个专门的目的,集合在一个屏幕中,旨在执行某种特定类型的开发任务。透视图的例子有 Web Perspective、Java Perspective 和 z/OS Projects Perspective。
图 1. RDz 中的 Data Perspective
Data Perspective 由 5 个资源管理器或窗口组成:
Data Project Explorer (1) 展示不同的项目以及您在这些项目中创建的工件。
Data Source Explorer (2) 展示已经定义的数据库,并允许您连接到这些数据库以及处理其中的对象。
Remote Systems (3) 展示已定义的 z/OS 系统,并允许您连接及处理它们。
页面中间的编辑器 (4) 用于编辑您正在开发的任何类型的工件(例如,COBOL 程序或 SQL 脚本)。
底部窗口 (5) 是一个状态/错误/任务栏,展示关于当前状态或最后执行的任务的信息。
在下面各节的适当时候,会给出显示相关资源管理器或窗口而不是整个 RDz 屏幕的图。
构建 XML 应用程序
下面我们来看创建一个存储过程所需的步骤,该存储过程用于向 DB2 表中插入 XML 文档。作为插入过程的一部分,必须针对 XML 模式对 XML 文档进行验证,以确保它具有正确的格式。
创建该存储过程及其所需的 DB2 工件的步骤可分成以下主要任务:
创建数据开发项目:
项目提供一个类似于文件夹的结构,用于组织您的工作,即将项目所需的各种内容组合在一起。数据开发项目与特定的 DB2 子系统相关联。它存储在 RDz 客户端的工作空间中,即笔记本上。
执行该任务涉及到的步骤展示在图 2 到图 9 中。
创建保存 XML 数据的 DB2 表:
用于保存 XML 数据的表将创建在与数据开发项目相关的 DB2 子系统中。
执行该任务涉及到的步骤展示在图 10 到图 13 中。
注册 XML 模式:
将使用存储过程插入的 XML 文档要针对 XML 模式进行验证。我们需要在 DB2 中注册该模式以启用验证。
执行该任务涉及到的步骤展示在图 14 到图 19 中。
创建 COBOL 存储过程:
COBOL 存储过程由一个 COBOL 下载模块和 DB2 中的定义组成。我们需要为下载模块创建 COBOL 源代码,还要创建给出 DB2 中定义的 DDL。源代码保持在 z/OS 上的一个数据集中,而 DDL 就本地保存在 RDz 工作空间中。
执行该任务涉及到的步骤展示在图 20 到图 32 中。
部署存储过程:
源代码被转换成 z/OS 上的加载模块,DDL 则针对与数据开发项目相关的 DB2 子系统进行运行。
执行该任务涉及到的步骤展示在图 33 到图 34 中。
创建数据开发项目
第一步是创建数据开发项目,其中将驻留项目所需的所有工件。
在 Data Project Explorer 的空白区域中右键单击,并选择 New > Project,如图 2 所示:
图 2. 创建新的数据开发项目,步骤 1
现在必须选择启动哪个向导。选择 Data Development Project,然后单击 Next,如图 3 所示:
图 3. 创建新的数据开发项目,步骤 2
给项目取个名称,比如 XML with COBOL SP,然后单击 Next:
图 4.创建新的数据开发项目,步骤 3
现在会要求您选择一个连接。如果已经定义了对 DB2 子系统的访问,那么要么通过 DB2 Connect 进行连接,要么像以前一样使用 RDz,该名称将出现在连接列表中。可以通过突出显示来选中;否则必须配置连接。要启动向导,单击 New:
图 5.创建新的数据开发项目,步骤 4
要选择连接配置文件类型,单击 DB2 for z/OS,给连接取一个名称(DSN9—DB2 子系统的位置名),并单击 Next:
图 6. 配置到 DB2 for z/OS 的连接,步骤 1
现在需要为 DB2 子系统提供连接信息:DB2 子系统的位置名、z/OS 系统的主机名(可以是一个 IP 地址或者是逻辑名称)以及 DB2 子系统的端口号。这些值可从 DB2 命令 DIS DDF 的输出中得到。
也需要 z/OS 上的用户名和密码,以用于连接。
如 图 7 所示,提供了以下值:
Location: DSN9
Host: 9.123.45.678
Port number: 446
User name: user48
Password:一些未显示出来的字符
单击 Test Connection,确保连接正常工作,然后单击 Finish:
图 7.配置到 DB2 for z/OS 的连接,步骤 2
新配置的连接出现在列表中。要选择它,单击它,然后单击 Finish:
图 8.创建新的数据开发项目,步骤 5
现在可在 Data Project Explorer 中看到新的数据开发项目,如图 9 所示:
图 9. 创建的数据开发项目
创建保存 XML 数据的 DB2 表
首先需要创建存储过程将在 DB2 中使用的对象,然后才能开始创建存储过程。
我们假设一个非常简单的数据模型,其中所有数据都以 XML 格式存储在一个表中。要创建这个表:
单击旁边的加号 (+) 展开新创建的数据开发项目。
右键单击 SQL Scripts,并选择 SQL or XQuery Script:
图 10. 创建 DB2 表,步骤 1
出现一个窗口,在其中给 DDL 脚本取一个名称,并单击 Finish:
图 11.创建 DB2 表,步骤 2
这导致一个编辑器打开在屏幕的中央区域。在编辑器中为表输入 DDL,通过按 CTRL+S 保存更改,然后右键单击 Data project Explorer 中的脚本,并选择 Run SQL:
图 12.创建 DB2 表,步骤 3
然后在与项目相关的 DB2 子系统创建表,屏幕底部会显示状态(如果 DDL 有错,则显示错误),如图 13 所示:
图 13. 创建 DB2 表,步骤 4
在 DB2 中注册 XML 模式
下一步是在 DB2 中注册 XML 模式。这严格来说并不是处理 DB2 中 XML 数据所必需的,但是您想要针对 XML 模式验证要插入 DB2 中的任何数据,以确保数据符合某种格式。最终,模式必须被 DB2 所知。
我们假设 XML 模式驻留在笔记本的本地文件系统中。这可以是您自己开发的满足应用程序需要的 XML 模式,也可以是一个给出通用标准的模式,比如 UBL 2.0,这是由 OASIS 开发的一种用于电子商务的格式。
实际上,如果您想要了解所使用的一些行业格式,比如 UBL 2.0、UNIFI(这是一种金融格式)或者 CDISC(这是一种用于临床数据的格式),有大量这样的格式可以下载。
要将 XML 模式注册到 DB2:
首先在 Data Source Explorer 中展开相关的子系统。
右键单击 XML Schemas,并选择 Register an XML schema:
图 14.在 DB2 for z/OS 中注册 XML 模式,步骤 1
输入您想要用于 XML 模式的名称和一段可选的注释,然后单击 Next。(名称可以是您所选的任何内容,因为它不直接与模式文档的实际内容相关。它是针对模式验证数据时将会用到的名称。)
本教程使用的名称是 UBL_INVOICE_2,没有注释,如图 15 所示:
图 15.在 DB2 for z/OS 中注册 XML 模式,步骤 2
单击 Add 以在本地文件系统中搜索模式:
图 16.在 DB2 for z/OS 中注册 XML 模式,步骤 3
浏览文件系统并选择您希望注册的文档。在本例中,模式由好几个文档组成。选择主文档,从属文档将由 RDz 自动包含进来,然后单击 Open:
图 17.在 DB2 for z/OS 中注册 XML 模式,步骤 4
单击 Finish 执行 DB2 中的模式注册:
图 18.在 DB2 for z/OS 中注册 XML 模式,步骤 5
模式现在已经注册到 DB2 中,在屏幕底部可以看到状态信息,如图 19 所示:
图 19.在 DB2 for z/OS 中注册 XML 模式,步骤 6
创建 COBOL 存储过程
至此,已经创建了 DB2 中必要的对象,可以开始开发 COBOL 存储过程了。
首先,确保 z/OS 上的开发所必需的所有数据集都已经创建好了。需要针对 COBOL 源代码、编译器错误、DBRM、代码清单输出、对象组(object decks)以及范本等的数据集。还需要一个可以向其中写信息的加载库,以及 DB2 和 LE 链接库的名称。
右键单击 Data Project Explorer 中的 Stored Procedures 文件夹,启动存储过程向导,并选择 New > Stored Procedure:
图 20.创建存储过程,步骤 1
为存储过程输入一个名称,并从下拉菜单选择语言 COBOL,然后单击 Next:
图 21.创建存储过程,步骤 2
接下来,输入 COBOL 模块的名称,然后单击 Next。出于方便,本教程使用与存储过程相同的名称,但是并不是必须这样。
图 22.创建存储过程,步骤 3
单击 Browse 选择您想要在其上创建存储过程的 z/OS 系统,并单击 Browse 选择您想要用于 COBOL 源代码的数据集,然后单击 Next:
图 23.创建存储过程,步骤 4
现在出现一个窗口,可以在其中输入一个或多个将用于存储过程中的 SQL 语句。本例中想要一个简单的 SQL 语句,即向表中插入一行,其中包括注释和 XML 文档。XML 文档要针对模式进行验证,所以使用函数 SYSPROC.DSN_XMLVALIDATE。该函数又必须与 XMLPARSE 函数一起使用,后者用于解析文档。结果显示在 图 24 中。
通过从下拉菜单选择适当的数字,也可以指定存储过程返回多少结果集。本例中选择 None,因为存储过程只插入数据,然后单击 Next:
图 24.创建存储过程,步骤 5
下一步是错误处理和添加参数。从下拉菜单选择 SQLSTATE 和 SQLCODE,然后单击 Add 添加参数:
图 25.创建存储过程,步骤 6
对于每个参数,指定它是 In、Out 或 InOut 参数。给参数取一个名称,指定一个 SQL 类型。根据类型,可能还需要指定长度和其他属性。
如 图 26 所示,我们创建一个名为 COM 的参数,SQL 类型为 VARCHAR(1000)。如果这是您想要创建的最后一个参数,那么单击 OK,如果想要创建更多参数,则单击 Apply。继续,直到所有参数都定义好。
图 26.创建存储过程,步骤 7
当所有参数都定义好了,并且单击了 OK,就会回到前一个窗口。注意,参数以后不可以更改,所以一开始要仔细将它们定义正确。下表列出了所有的参数(参见 图 27):
模式 | 名称 | SQL 类型 | COBOL 类型 |
In | COM | VARCHAR(1000) | 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(1000) USAGE DISPLAY |
In | DOC | CLOB(1M) | USAGE IS SQL TYPE IS CLOB(1M) |
In | SCHEMA | VARCHAR(100) | 49 VAR-LEN PIC S9(4) USAGE BINARY. 49 VAR-TEXT PIC X9(100) USAGE DISPLAY |
Out | SQLSTATEOUT | CHAR(5) | PIC X(5) |
Out | SQLCODEOUT | INTEGER | PIC S9(9) COMP-5 |
单击 Next。
图 27.创建存储过程,步骤 8
现在必须指定您想要用于存储过程包的集合 ID,然后单击 Advanced。(我们选择值 DB2ADMIN。)
图 28.创建存储过程,步骤 9
填写将用于存储过程的 WLM 环境名称。(我们使用值 DSN9WL4K。)单击 OK 返回到前一个窗口,然后单击 Next:
图 29.创建存储过程,步骤 10
在下一个窗口中,可以指定将前面开发的哪些代码段包含在存储过程中,如图 30 所示。单击 Next。
图 30.创建存储过程,步骤 11
现在已经完成了存储过程向导,出现一个摘要页面,在这里可以检查所有东西是否都按预期定义好了(参见 图 31)。如果没有,还可以返回去进行更改。单击 Finish。
图 31.创建存储过程,步骤 12
当存储过程向导完成时,页面中央的编辑器打开,其中带有生成的 COBOL 源代码。现在可以对代码进行任何需要的更改或添加。
我们添加两个语句,用于将 SQLCODE 和 SQLSTATE 移动到输出参数 SQLCODEOUT 和 SQLSTATEOUT,以便存储过程返回 SQLCA 中给出的插入语句的结果。按 CTRL+S 保存所做的任何更改。
至此,COBOL 源代码已经可以编译了。参见 图 32,查看完整的源代码:
图 32.创建存储过程,步骤 13
代码清单 1 显示了图 32 中的代码清单。
清单 1. 创建存储过程的代码 ***************************************************
*COBOL Stored Procedure INSVXML
*System Long Name: STPLEX4A.SVL.IBM.COM
*System Short Name: stplex4a.svl.ibm.com
*Data Set: DK18523.SP.COBOL(INSVXML)
* @param COM
* @param DOC
* @param SCHEMANAME
* @param SQLSTATEOUT
* @param SQLCODEOUT
***************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. INSVXML.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
EXEC SQL INCLUDE SQLCA END-EXEC.
LINKAGE SECTION.
01 COM.
49 VAR-LEN PIC S9(4) USAGE BINARY.
49 VAR-TEXT PIC X9(1000) USAGE DISPLAY.
01 DOC USAGE IS SQL TYPE IS CLOB(1M).
01 SCHEMANAME.
49 VAR-LEN PIC S9(4) USAGE BINARY.
49 VAR-TEXT PIC X9(100) USAGE DISPLAY.
01 SQLSTATEOUT PIC X(5).
01 SQLCODEOUT PIC S9(9) COMP-5.
PROCEDURE DIVISION USING
COM
DOC
SCHEMANAME
SQLSTATEOUT
SQLCODEOUT.
EXEC SQL
INSERT INTO DB2ADMIN.XMLTABLE (COMMENT, DOCUMENT)
VALUES(:COM, XMLPARSE (DOCUMENT
SYSFUN.DSN_XMLVALIDATE(.DOC, :SCHEMANAME)))
END-EXEC.
MOVE SQLSTATE TO SQLSTATEOUT.
MOVE SQLCODE TO SQLCODEOUT.
GOBACK.
部署存储过程
在编辑器区域的底部,有很多选项卡,让您可以访问关于存储过程的不同信息。单击 Data sets for Deploy 选项卡并为列出的每个数据填写值。确保所有这些数据集都存在。使用 CTRL+S 保存更改。也可以进入其他选项卡,在那里执行您需要的任何更改。
图 33. 用于部署的数据集
最后,可以构建和部署存储过程了。在 Data Project Explorer 中,右键单击存储过程并选择 Deploy,如 图 34 所示。
图 34. 将存储过程部署到 DB2 for z/OS
Rational Developer for System z 然后将在 z/OS 上产生一个作业,用于执行部署存储过程时需要完成的所有任务,包括预编译、编译、链接编辑和绑定,以及刷新用于存储过程的 WLM 环境。跟平常一样,完成部署时会在屏幕底部显示状态信息(或者任何编译器错误或其他错误)。
测试存储过程
将存储过程部署到了与数据开发项目相关的 DB2 子系统,就可以进行测试了。
在 Data Perspective 左下角的 Data Source Explorer 视图中找到存储过程,如 图 24 所示。
展开 Databases,然后展开正在使用的子系统(本例中是 DSN9)。
展开 Schemas 和您的模式(本例中是 DK18523),然后展开 Stored Procedures。
右键单击存储过程并在下拉菜单中选择 Run:
图 35.测试存储过程,步骤 1
直接在出现的窗口中输入简单的值。要输入 XML 值,单击右侧的省略号按钮:
图 36.测试存储过程,步骤 2
现在出现一个小编辑器,可以帮助您输入值,其中甚至还有一个 XML 选项卡,可以帮助产生格式良好的 XML。本例中,在本地文件系统中具有用于测试的示例数据。单击 Browse。
图 37.测试存储过程,步骤 3
浏览以找到所需的文档,并单击 Open:
图 38.测试存储过程,步骤 4
单击 OK 回到前一个屏幕,如 图 39 所示,然后再次单击 OK 运行存储过程。
图 39.测试存储过程,步骤 5
在状态窗口的左侧(参见 图 40),可以看到存储过程已经成功运行。在右侧,可以看到每个参数的值,包括输出参数 SQLCODEOUT 和 SQLSTATEOUT 在内,这两个参数的值都是 0,表明插入成功。
图 40. 测试存储过程,步骤 6
结束语
本教程介绍了如何通过 Rational Developer for System z 构建、测试和部署用于操纵 XML 的 COBOL 存储过程。还介绍了如何将 XML 模式注册到 DB2,以及从 COBOL 针对该模式验证 XML。
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››Form Reset Function
- ››OSC“回到顶部”代码
- ››db2 命令选项解释
- ››OSCHINA 使用 Github 登录的源码
- ››FOREACH 宏之GCC实现
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- 中查找“在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程”更多相关内容
- 中查找“在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程”更多相关内容
- 上一篇:将 InfoSphere Warehouse 数据挖掘与 IBM Cognos 报告集成,第 1 部分: InfoSphere Warehouse 与 Cognos 集成架构概述
- 下一篇:在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web
更多精彩
赞助商链接