DB2 使用 CTE 和 sql 递归获取超出最大的 QDT 数组列表

DB2 getting QDT Array List maximum exceeded using CTE and sql recursion

我正在使用 CTE 创建递归查询以将多列数据合并为一列。

我有大约 9 个工作 CTE(我需要在每个请求的一行中多次合并列,所以我有 CTE 助手)。当我添加第 10 个时,出现错误。我是 运行 Visual Studio 2010 的查询,这里是错误:

并且在 As400 系统上使用 WRKOBJLCK MyUserProfile *USRPRF 命令,我看到:

我找不到这方面的任何信息。

我在 AS400 系统上使用 DB2 运行,并使用:操作系统:i5/OS 版本:V5R4M0

我重复这些相同的 3 个 CTE,但要比较的条件不同:

  t1A (ROWNUM, PARTNO, LOCNAM, LOCCODE, QTY) AS
  ( 
    SELECT rownumber() over(partition by s2.LOCPART),  s2.LOCPART, s2.LOCNAM, s2.LOCCODE, s2.LOCQTY
    FROM (
             SELECT distinct s1.LOCPART, L.LOCNAM, L.LOCCODE, L.LOCQTY
             FROM(
                     SELECT COUNT(LOCPART) AS counts, LOCPART
                     FROM LOCATIONS
                 WHERE LOCCODE = 'A'
                 GROUP BY LOCPART) S1, LOCATIONS L
                     WHERE S1.COUNTS > 1 AND S1.LOCPART = L.LOCPART AND L.LOCCODE = 'A'
                  )s2
  ),
  t2A(PARTNO, LIST, QTY, CODE, CNT) AS
  (
       select PARTNO, LOCNAM, QTY, LOCCODE, 1
       from t1A
       where ROWNUM = 1
       UNION ALL
       select t2A.PARTNO, t2A.LIST || ', ' || t1A.LOCNAM, t1A.QTY, t1A.LOCCODE,  t2A.CNT + 1
       FROM t2A, t1A
       where t2A.PARTNO = t1A.PARTNO
       AND  t2A.CNT + 1 = t1A.ROWNUM
  ),
  t3A(PARTNO, LIST, QTY, CODE, CNT) AS
  (
         select  t2.PARTNO, t2.LIST, q.SQTY, t2.CODE, t2.CNT
         from(
                 select  SUM(QTY) as SQTY, PARTNO
                 FROM t1A
                 GROUP BY PARTNO
             ) q, t2A t2
         where t2.PARTNO = q.PARTNO
  )

使用这些,我只是在其中一个 CTE 上调用一个简单的 select 来进行测试,每次当我有超过 9 个 CTE(即使只调用一个)时我都会收到错误.

在AS400错误(绿屏快照)中QDT代表什么,我什么时候在这里使用数组?

这是一团糟。错误后错误。我能解决这个问题的唯一方法是创建视图并将它们拼凑在一起。

在创建视图时,我只能让它与一个 CTE 一起工作,而不是多个,那么作为一个递归 CTE 工作正常的东西,在尝试定义为视图时将无法工作。我不得不将子查询分解为视图,我无法从 SELECT rownumber() over(partition by COL1, Col2) 中创建包含子查询的视图,我不得不将其分解为两种观点。如果我使用视图作为其子查询调用 SELECT rownumber() over(partition by COL1, Col2) 并将其放入 CTE 中,它将无法工作。我必须将 SELECT rownumber() over(partition by COL1, Col2) 及其内部视图放入另一个视图中,然后我才能在 CTE 中使用它,然后创建一个主视图那个。

此外,我遇到的每个错误都是系统错误,而不是 SQL。

所以总而言之,如果有人遇到过同样的问题,我非常依赖意见来解决我的问题。