【问题标题】:Debugging DB2 Session调试 DB2 会话
【发布时间】:2013-08-17 11:15:24
【问题描述】:

我只是调试 iSeries/RPG/SQL 问题的唯一不幸者……(我不是 RPG 专家)

我有一个程序,其中包含在 iSeries 上的 DB2 上声明的临时表。临时表是在会话中声明的,因此当我通过 iSeries 上的终端运行应用程序并调试 RPG 时(我认为这是正确的术语?)无论如何,我实际上处于两个不同的会话中。

我正在查看的 SQL 做了这样的事情......

select blah from SESSION/#temp_table left join #real_table left join _to_many_other_tables

虽然我可以很好地查询“真实表”,但我看不到 SESSION 表的内容......那么我将如何在不同的会话中查询表?大概 SESSION/#temp_table 是我可以通过执行 select * from 123123/#temp_table 之类的操作来查询的东西,但我怎么知道其他会话 id/name/variable/access token 的样子?

【问题讨论】:

  • 如下所述,我不能只查看生成临时表的 SQL。在 DB2 上,我认为您可以使用类似“select dataX, dataY from table(RPG_PROGRAM_X([...]) as x, tabley as y where x.id = y.id [...]”的语法来做到这一点

标签: sql ibm-midrange db2-400 rpg


【解决方案1】:

您可以使用STRSRVJOB 调试另一个作业,但这可能不会让您查询该作业的 QTEMP。传统上,中端程序员以交互方式调试这些工作。登录到绿屏会话并调用您要调试的程序。

STRDBGSTRISDBsystem debuggerRDi 中的 SEP 设施之间,有很多选项可以解决debugging problem。此外,开源DBG400 可能值得一看。

编辑: 这个问题很困难。看起来这是一个客户端/服务器类型的应用程序。在编写这样的应用程序时,我通常会在其中放置一个调试开关,以便我可以记录正在发生的事情以进行调试。 DB2 for i 上的存储过程可以纯粹用 SQL 实现,也可以调用像 RPG 之类的 HLL 来实现。

如果您的 SP 是外部的,例如 RPG,则添加一些代码,将临时文件复制到系统上的真实库中。将其实现为 system() 或 QCMDEXC 调用对现有程序代码的干扰不是很大。您可以使用数据区域打开和关闭它 - 同样,非常不具侵入性,但您可以从应用程序外部设置调试状态。

如果您的 SP 是 SQL,我会修改它们以在真实库中写入临时文件的副本。假设有一个 CREATE TABLE QTEMP/TEMP001 WITH DATA ... 添加一个 CREATE TABLE DEBUGLIB/TEMP001 WITH DATA ... 如果你愿意,你可以在一个特殊的“调试”用户配置文件中键入这个额外的代码,尽管这可能需要一些IBM i 方面的安全更改。

【讨论】:

  • 是的,我在绿屏上使用了 STRDBG,但这并没有让我从事 QTemp 或 Session 工作。要使用调用调试它,我必须编写一个包装器并调整每个调用的参数,因为每个调用都会在表中构建数据,这很费力。
  • 通常,构建临时文件的进程是一个批处理进程,并且通常已经由 CL 程序或 CL 脚本编写脚本(通过 SBMDBJOB)。你的工作是如何开始的?
  • 它是交互式的,所以一个 Windows 应用程序开始了这项工作。构建了许多临时表来汇总一些数据,然后将这些临时表上的连接连接起来产生结果......这很好,但它产生了错误的结果,我看不到临时表中的数据...... .(不是我的代码,它只是由我来修复!)
  • 我之前错过了编辑,但看起来这会做我所追求的。下周我会做一些测试。谢谢
  • @0909EM 不需要查看临时表中的数据。您应该只需要构建临时表的 SQL 语句。使用它的副本,您可以构建结果集的副本。这意味着需要准确查看语句是什么或构建语句的变量值是什么。如果您使用最近的 cume 和 DB2 PTF 组针对 i 6.1 或更高版本运行,Data Studio 4.1.0.1 为 SQL 存储过程提供 SQL 调试。它需要设置和练习,但很有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多