“数据库协调”样本
提供了两个样本,用于演示 IBM® MQ 如何协调同一工作单元中的 IBM MQ 更新和数据库更新。
下面提供了这些样本:
- AMQSXAS0 (in C) 或 (in ),在 工作单元内更新单个数据库。 AMQ0XAS0 COBOL IBM MQ
- 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 显示所提供的样本如何用于更新数据库:

这些程序从队列中读取消息(在同步点下),然后使用该消息中的信息从数据库获取相关信息并进行更新。 随后打印数据库的新状态。
程序逻辑如下:
- 使用程序自变量中的输入队列名称
- 使用 MQCONN 连接到缺省队列管理器(在 C 中,可选择连接到所提供的名称)
- 在无故障的情况下打开输入队列(使用 MQOPEN)
- 使用 MQBEGIN 启动工作单元
- 在同步点下从队列中获取下一条消息(使用 MQGET)
- 从数据库中获取信息
- 更新数据库信息
- 使用 MQCMIT 落实更改
- 打印已更新的信息(未出现消息时计为失败,并且循环结束)
- 使用 MQCLOSE 关闭该队列
- 使用 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 才能正确链接。