【发布时间】:2017-11-29 18:25:06
【问题描述】:
我的要求是从 DB2 表中选择电话号码等于 16 组电话号码的数据。我尝试在我的本地测试数据上运行下面给出的这个查询,我的程序成功运行! 但是,当我尝试在真实表(备份表)上运行相同的程序时,我的 RUN jcl 因 S722 异常终止而失败。
我觉得这不是空间异常终止,因为我们正在使用具有 7 个圆柱体(1 个主要,6 个次要)属性的文件。根据我的研究,我发现带有'IN,'LIKE'的sql查询需要太多时间来执行,因此将Jobcard中的Time参数更改为NOLIMIT。但是没有运气!!
有人可以帮助我以其他方式编写此查询吗?或者帮我纠正这个问题....
这样查询:
EXEC SQL
DECLARE WS-CURSOR CURSOR WITH HOLD FOR
SELECT CUST_ID,CUST_NAME,SEQ_NUM,PHONE_NUM FROM PHONE_TAB
WHERE PHONE_NUM IN ('123456789','789456123','456789123','789456123' etc) AND
PHONE_TYPE = 'DU'
END-EXEC.
提前致谢!!
【问题讨论】:
-
您的
FETCH是什么样的?我问的原因是失败不在声明中,即不可执行,S722 可能是数组大小问题。 -
PHONE_NUM 和 PHONE_TYPE 列的定义是什么?
-
使用 JOBPARM LINES=999999。这应该让您在输出中写入所有行。顺便问一下,您期望有多少输出记录?而且我相信 Phone_type 应该在引号中作为“DU”。
-
@cschneid 你应该写一个答案,下面的其他答案都不正确
-
@SaggingRufus 我已将我的评论(现已删除)合并到答案中。希望这对未来的OP和其他人有所帮助。感谢您的提示,有时我在评论和回答之间摇摆不定。