首页 > 解决方案 > 错误 FOR ALL ENTRIES 选择的 SQL 命令太大

问题描述

以下语句导致短转储说:

FOR ALL ENTRIES 选择的 SQL 命令太大

所以在下面的代码中,范围表都具有范围表类型。导致的运行时错误是DBSQL_FAE_STATEMENT_TO_BIG. 我不完全确定是什么原因造成的以及如何优化它。

请注意,我已经一次循环遍历一组条目it_tab2并在循环中执行此选择,以便处理it_tab2太大的情况。

范围表中的条目数似乎也没有太多,这让我想知道为什么它会导致转储。

SELECT id numpeople APPENDING TABLE it_tab
  FROM workbook
  FOR ALL ENTRIES IN it_tab1
  WHERE id    EQ it_tab1-id
    AND id    IN it_tab2
    AND lang  IN tab_ranges1
    AND name  IN tab_ranges2
    AND phone IN tab_ranges3
    AND fax   IN tab_ranges4.

标签: abapopensql

解决方案


这个限制来自数据库端。每个数据库都有与数据大小相关的 IN 运算符的限制。您可以尝试使用 JOIN 而不是 FOR ALL ENTRIES。如果没有办法,您可以将 itab 拆分成更小的部分。


推荐阅读