Java 用于检索上次执行的SQL语句的DB2系统运行时表

Java 用于检索上次执行的SQL语句的DB2系统运行时表,java,db2,cobol,db2-zos,Java,Db2,Cobol,Db2 Zos,大型机中是否有DB2系统表批处理运行时日志?在DB2fori系列中,有一个表函数QSYS2.GET\u JOB\u INFO(),它在运行时返回作业信息,包括状态(活动/完成)以及最重要的V\u SQL\u STATEMENT\u TEXT-上一次SQL运行的语句 情景: 我想在Cobol批处理作业中检索运行时最后执行的SQL语句。其主要目的是确定作业运行时是否已发出提交或回滚。其目的是创建一个小程序,我们称之为“控制器”,以便在发出提交或提交间隔,甚至回滚时监视DB2。更具体地说,这个“控制器

大型机中是否有DB2系统表批处理运行时日志?在DB2fori系列中,有一个表函数
QSYS2.GET\u JOB\u INFO()
,它在运行时返回作业信息,包括状态(活动/完成)以及最重要的
V\u SQL\u STATEMENT\u TEXT
-上一次SQL运行的语句

情景: 我想在Cobol批处理作业中检索运行时最后执行的SQL语句。其主要目的是确定作业运行时是否已发出提交或回滚。其目的是创建一个小程序,我们称之为“控制器”,以便在发出提交或提交间隔,甚至回滚时监视DB2。更具体地说,这个“控制器”将充当迷你操作系统,并具有触发主程序的能力

例如,如果主程序发出回滚,“控制器程序”可以发出特定的业务逻辑并控制更新。可以在T1和T2类型的DB2连接中进行更新。通过这种方式,更新是在批处理客户端或运行在exi(exi使用RRS恢复)中的Java端完成的。

中的快速查看似乎表明“否”

然而,虽然与你的情况并不完全相符,但我们过去是这样做的

创建一个表,用列将其称为
APP\u RESTART\u DATA
,以唯一标识流程的执行。我们使用
PROC\u NAME
STEP\u NAME
,因为我们仅限于批处理作业。还有一个
列,以及在重启情况下可能会有帮助的任何其他元数据。有些人存储的是记录编号,而不是实际的键值

在控制器程序中,首先使用您的唯一标识符执行
选择
,以确定您是否处于重启模式。如果您的
SQLCODE
值为0,则您处于重新启动模式,并且将检索到成功执行
COMMIT
的最后一个键。在这些情况下,您必须在输入数据中找到该键,然后立即开始对数据进行正常处理。如果您的
SQLCODE
值为100,则您没有处于重新启动模式;在这些情况下,您只需在输入数据开始时开始正常处理

当您处理输入数据并到达
COMMIT
点时,还可以使用新键
UPDATE
更新
APP\u RESTART\u data
表。然后提交。我们的
COMMIT
点也由一个参数指定,该参数指示在
COMMIT
之间要处理多少逻辑工作单元。如果有必要在主要班次期间运行通常是非班次运行的批处理,我们可以减少此参数

当您完成输入数据的处理后,
删除
应用程序重新启动数据表中流程的行

捕获<代码>回滚
可能很棘手。当在代码中执行时,您可以将
APP\u RESTART\u DATA
中的行标记为执行了
回滚
,但如果在异常终止情况下隐式执行,您可能会发现自己通过语言环境可调用服务注册了一个条件处理程序,以便获得控制权,并可以指示发生了
回滚

快速看一眼屏幕似乎表明“不”

然而,虽然与你的情况并不完全相符,但我们过去是这样做的

创建一个表,用列将其称为
APP\u RESTART\u DATA
,以唯一标识流程的执行。我们使用
PROC\u NAME
STEP\u NAME
,因为我们仅限于批处理作业。还有一个
列,以及在重启情况下可能会有帮助的任何其他元数据。有些人存储的是记录编号,而不是实际的键值

在控制器程序中,首先使用您的唯一标识符执行
选择
,以确定您是否处于重启模式。如果您的
SQLCODE
值为0,则您处于重新启动模式,并且将检索到成功执行
COMMIT
的最后一个键。在这些情况下,您必须在输入数据中找到该键,然后立即开始对数据进行正常处理。如果您的
SQLCODE
值为100,则您没有处于重新启动模式;在这些情况下,您只需在输入数据开始时开始正常处理

当您处理输入数据并到达
COMMIT
点时,还可以使用新键
UPDATE
更新
APP\u RESTART\u data
表。然后提交
。我们的
COMMIT
点也由一个参数指定,该参数指示在
COMMIT
之间要处理多少逻辑工作单元。如果有必要在主要班次期间运行通常是非班次运行的批处理,我们可以减少此参数

当您完成输入数据的处理后,
删除
应用程序重新启动数据表中流程的行

捕获<代码>回滚
可能很棘手。当在代码中执行时,您可以将
APP\u RESTART\u DATA
中的行标记为执行了
回滚
,但如果在异常终止情况下隐式执行,您可能会发现自己通过语言环境可调用服务注册了一个条件处理程序,以便获得控制权,并可以指示发生了
回滚

。。。。好吧,你为什么要这个?你想解决什么商业问题?请注意,您试图做出的任何“监控和决策”都将受到严峻的比赛条件的影响。还要注意的是,在发出
ROLLBACK
COMMIT
之后,试图做出决定并做其他事情,可能会引起大量的麻烦。这两种说法几乎总是立即成功,但是如果你想做一些额外的工作(l