WEB开发网
开发学院数据库DB2 在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 ... 阅读

在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

 2009-12-27 00:00:00 来源:WEB开发网   
核心提示:开始之前关于本系列随着 SOA 和基于 Web 的技术的流行,有越来越多的 XML 数据进出计算机系统,在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程,IBM DB2® 9 for z/OS&re

开始之前

关于本系列

随着 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
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

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
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在必须选择启动哪个向导。选择 Data Development Project,然后单击 Next,如图 3 所示:

图 3. 创建新的数据开发项目,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

给项目取个名称,比如 XML with COBOL SP,然后单击 Next:

图 4.创建新的数据开发项目,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在会要求您选择一个连接。如果已经定义了对 DB2 子系统的访问,那么要么通过 DB2 Connect 进行连接,要么像以前一样使用 RDz,该名称将出现在连接列表中。可以通过突出显示来选中;否则必须配置连接。要启动向导,单击 New:

图 5.创建新的数据开发项目,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

要选择连接配置文件类型,单击 DB2 for z/OS,给连接取一个名称(DSN9—DB2 子系统的位置名),并单击 Next:

图 6. 配置到 DB2 for z/OS 的连接,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在需要为 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
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

新配置的连接出现在列表中。要选择它,单击它,然后单击 Finish:

图 8.创建新的数据开发项目,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在可在 Data Project Explorer 中看到新的数据开发项目,如图 9 所示:


图 9. 创建的数据开发项目
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

创建保存 XML 数据的 DB2 表

首先需要创建存储过程将在 DB2 中使用的对象,然后才能开始创建存储过程。

我们假设一个非常简单的数据模型,其中所有数据都以 XML 格式存储在一个表中。要创建这个表:

单击旁边的加号 (+) 展开新创建的数据开发项目。

右键单击 SQL Scripts,并选择 SQL or XQuery Script:

图 10. 创建 DB2 表,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

出现一个窗口,在其中给 DDL 脚本取一个名称,并单击 Finish:

图 11.创建 DB2 表,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

这导致一个编辑器打开在屏幕的中央区域。在编辑器中为表输入 DDL,通过按 CTRL+S 保存更改,然后右键单击 Data project Explorer 中的脚本,并选择 Run SQL:

图 12.创建 DB2 表,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

然后在与项目相关的 DB2 子系统创建表,屏幕底部会显示状态(如果 DDL 有错,则显示错误),如图 13 所示:


图 13. 创建 DB2 表,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

在 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
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

输入您想要用于 XML 模式的名称和一段可选的注释,然后单击 Next。(名称可以是您所选的任何内容,因为它不直接与模式文档的实际内容相关。它是针对模式验证数据时将会用到的名称。)

本教程使用的名称是 UBL_INVOICE_2,没有注释,如图 15 所示:

图 15.在 DB2 for z/OS 中注册 XML 模式,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

单击 Add 以在本地文件系统中搜索模式:

图 16.在 DB2 for z/OS 中注册 XML 模式,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

浏览文件系统并选择您希望注册的文档。在本例中,模式由好几个文档组成。选择主文档,从属文档将由 RDz 自动包含进来,然后单击 Open:

图 17.在 DB2 for z/OS 中注册 XML 模式,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

单击 Finish 执行 DB2 中的模式注册:

图 18.在 DB2 for z/OS 中注册 XML 模式,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

模式现在已经注册到 DB2 中,在屏幕底部可以看到状态信息,如图 19 所示:


图 19.在 DB2 for z/OS 中注册 XML 模式,步骤 6
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

创建 COBOL 存储过程

至此,已经创建了 DB2 中必要的对象,可以开始开发 COBOL 存储过程了。

首先,确保 z/OS 上的开发所必需的所有数据集都已经创建好了。需要针对 COBOL 源代码、编译器错误、DBRM、代码清单输出、对象组(object decks)以及范本等的数据集。还需要一个可以向其中写信息的加载库,以及 DB2 和 LE 链接库的名称。

右键单击 Data Project Explorer 中的 Stored Procedures 文件夹,启动存储过程向导,并选择 New > Stored Procedure:

图 20.创建存储过程,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

为存储过程输入一个名称,并从下拉菜单选择语言 COBOL,然后单击 Next:

图 21.创建存储过程,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

接下来,输入 COBOL 模块的名称,然后单击 Next。出于方便,本教程使用与存储过程相同的名称,但是并不是必须这样。

图 22.创建存储过程,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

单击 Browse 选择您想要在其上创建存储过程的 z/OS 系统,并单击 Browse 选择您想要用于 COBOL 源代码的数据集,然后单击 Next:

图 23.创建存储过程,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在出现一个窗口,可以在其中输入一个或多个将用于存储过程中的 SQL 语句。本例中想要一个简单的 SQL 语句,即向表中插入一行,其中包括注释和 XML 文档。XML 文档要针对模式进行验证,所以使用函数 SYSPROC.DSN_XMLVALIDATE。该函数又必须与 XMLPARSE 函数一起使用,后者用于解析文档。结果显示在 图 24 中。

通过从下拉菜单选择适当的数字,也可以指定存储过程返回多少结果集。本例中选择 None,因为存储过程只插入数据,然后单击 Next:

图 24.创建存储过程,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

下一步是错误处理和添加参数。从下拉菜单选择 SQLSTATE 和 SQLCODE,然后单击 Add 添加参数:

图 25.创建存储过程,步骤 6
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

对于每个参数,指定它是 In、Out 或 InOut 参数。给参数取一个名称,指定一个 SQL 类型。根据类型,可能还需要指定长度和其他属性。

如 图 26 所示,我们创建一个名为 COM 的参数,SQL 类型为 VARCHAR(1000)。如果这是您想要创建的最后一个参数,那么单击 OK,如果想要创建更多参数,则单击 Apply。继续,直到所有参数都定义好。

图 26.创建存储过程,步骤 7
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

当所有参数都定义好了,并且单击了 OK,就会回到前一个窗口。注意,参数以后不可以更改,所以一开始要仔细将它们定义正确。下表列出了所有的参数(参见 图 27):

模式名称SQL 类型COBOL 类型
InCOMVARCHAR(1000)49 VAR-LEN PIC S9(4) USAGE BINARY.
49 VAR-TEXT PIC X9(1000) USAGE DISPLAY
InDOCCLOB(1M)USAGE IS SQL TYPE IS CLOB(1M)
InSCHEMAVARCHAR(100)49 VAR-LEN PIC S9(4) USAGE BINARY.
49 VAR-TEXT PIC X9(100) USAGE DISPLAY
OutSQLSTATEOUTCHAR(5)PIC X(5)
OutSQLCODEOUTINTEGERPIC S9(9) COMP-5


单击 Next。

图 27.创建存储过程,步骤 8
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在必须指定您想要用于存储过程包的集合 ID,然后单击 Advanced。(我们选择值 DB2ADMIN。)

图 28.创建存储过程,步骤 9
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

填写将用于存储过程的 WLM 环境名称。(我们使用值 DSN9WL4K。)单击 OK 返回到前一个窗口,然后单击 Next:

图 29.创建存储过程,步骤 10
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

在下一个窗口中,可以指定将前面开发的哪些代码段包含在存储过程中,如图 30 所示。单击 Next。

图 30.创建存储过程,步骤 11
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在已经完成了存储过程向导,出现一个摘要页面,在这里可以检查所有东西是否都按预期定义好了(参见 图 31)。如果没有,还可以返回去进行更改。单击 Finish。

图 31.创建存储过程,步骤 12
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

当存储过程向导完成时,页面中央的编辑器打开,其中带有生成的 COBOL 源代码。现在可以对代码进行任何需要的更改或添加。

我们添加两个语句,用于将 SQLCODE 和 SQLSTATE 移动到输出参数 SQLCODEOUT 和 SQLSTATEOUT,以便存储过程返回 SQLCA 中给出的插入语句的结果。按 CTRL+S 保存所做的任何更改。

至此,COBOL 源代码已经可以编译了。参见 图 32,查看完整的源代码:


图 32.创建存储过程,步骤 13
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

代码清单 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. 用于部署的数据集
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

最后,可以构建和部署存储过程了。在 Data Project Explorer 中,右键单击存储过程并选择 Deploy,如 图 34 所示。


图 34. 将存储过程部署到 DB2 for z/OS
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

Rational Developer for System z 然后将在 z/OS 上产生一个作业,用于执行部署存储过程时需要完成的所有任务,包括预编译、编译、链接编辑和绑定,以及刷新用于存储过程的 WLM 环境。跟平常一样,完成部署时会在屏幕底部显示状态信息(或者任何编译器错误或其他错误)。

测试存储过程

将存储过程部署到了与数据开发项目相关的 DB2 子系统,就可以进行测试了。

在 Data Perspective 左下角的 Data Source Explorer 视图中找到存储过程,如 图 24 所示。

展开 Databases,然后展开正在使用的子系统(本例中是 DSN9)。

展开 Schemas 和您的模式(本例中是 DK18523),然后展开 Stored Procedures。

右键单击存储过程并在下拉菜单中选择 Run:

图 35.测试存储过程,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

直接在出现的窗口中输入简单的值。要输入 XML 值,单击右侧的省略号按钮:

图 36.测试存储过程,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

现在出现一个小编辑器,可以帮助您输入值,其中甚至还有一个 XML 选项卡,可以帮助产生格式良好的 XML。本例中,在本地文件系统中具有用于测试的示例数据。单击 Browse。

图 37.测试存储过程,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

浏览以找到所需的文档,并单击 Open:

图 38.测试存储过程,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

单击 OK 回到前一个屏幕,如 图 39 所示,然后再次单击 OK 运行存储过程。

图 39.测试存储过程,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

在状态窗口的左侧(参见 图 40),可以看到存储过程已经成功运行。在右侧,可以看到每个参数的值,包括输出参数 SQLCODEOUT 和 SQLSTATEOUT 在内,这两个参数的值都是 0,表明插入成功。


图 40. 测试存储过程,步骤 6
在 DB2 for z/OS 中构建 pureXML 应用程序,第 3 部分: 利用 Rational Developer for System z 开发存储过程

结束语

本教程介绍了如何通过 Rational Developer for System z 构建、测试和部署用于操纵 XML 的 COBOL 存储过程。还介绍了如何将 XML 模式注册到 DB2,以及从 COBOL 针对该模式验证 XML。

Tags:DB for OS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接