“数据库协调”样本

提供了两个样本,用于演示 IBM® MQ 如何协调同一工作单元中的 IBM MQ 更新和数据库更新。

下面提供了这些样本:
  1. AMQSXAS0 (in C) 或 (in ),在 工作单元内更新单个数据库。 AMQ0XAS0 COBOL IBM MQ
  2. AMQSXAG0 (in C) 或 (in )、 (in C) 或 (in ),以及 (in C) 或 (in ),它们在一个 工作单元内共同更新了两个数据库,展示了如何访问多个数据库。 AMQ0XAG0 COBOL AMQSXAB0 AMQ0XAB0 COBOL AMQSXAF0 AMQ0XAF0 COBOL IBM MQ 提供这些样本是为了显示 MQBEGIN 调用,混合 SQL 和 IBM MQ 调用的使用情况以及连接到数据库的位置和时间。

图 1 显示所提供的样本如何用于更新数据库:

图 1。 “数据库协调”样本
该图是前面文本中描述的程序与数据库之间的关系图。

这些程序从队列中读取消息(在同步点下),然后使用该消息中的信息从数据库获取相关信息并进行更新。 随后打印数据库的新状态。

程序逻辑如下:
  1. 使用程序自变量中的输入队列名称
  2. 使用 MQCONN 连接到缺省队列管理器(在 C 中,可选择连接到所提供的名称)
  3. 在无故障的情况下打开输入队列(使用 MQOPEN)
  4. 使用 MQBEGIN 启动工作单元
  5. 在同步点下从队列中获取下一条消息(使用 MQGET)
  6. 从数据库中获取信息
  7. 更新数据库信息
  8. 使用 MQCMIT 落实更改
  9. 打印已更新的信息(未出现消息时计为失败,并且循环结束)
  10. 使用 MQCLOSE 关闭该队列
  11. 使用 MQDISC 断开与该队列的连接

这些样本中使用了 SQL 游标,因此在处理消息时将锁定对数据库的读操作(即多个实例),并允许同时运行这些程序的多个实例。 系统会显式打开游标,但通过 MQCMIT 调用隐式关闭游标。

单个数据库样本 (AMQSXAS0 或 AMQ0XAS0) 没有 SQL CONNECT 语句, IBM MQ 使用 MQBEGIN 调用隐式建立与数据库的连接。 多数据库样本(AMQSXAG0 或 AMQ0XAG0、AMQSXAB0 或 AMQ0XAB0,以及 AMQSXAF0 或 AMQ0XAF0)包含 SQL CONNECT 语句,因为某些数据库产品只允许有一个活动连接。 如果您的数据库产品并非如此,或者您正在访问多数据库产品中的单个数据库,那么可除去 SQL CONNECT 语句。

样本是使用 IBM Db2® 数据库产品准备的,因此您可能需要对其进行修改以使用其他数据库产品。

SQL 错误检查使用 UTIL.C 和 CHECKERR.CBL 由 Db2提供。 必须先编译或替换这些例程,然后才能对其进行编译和链接。

注意: 如果使用 Micro Focus COBOL 源 CHECKERR.MFC 进行 SQL 错误检查,则必须将程序 ID 改为大写,即 CHECKERR,这样 AMQ0XAS0 才能正确链接。