0

我有一个我无法解决的问题。我有这样的声明:

SELECT account,
    listagg(field1 || ', ') WITHIN
GROUP (
        ORDER BY field1
        ) AS field1
FROM TABLE1
GROUP BY account

我收到一个错误:

ORA-01489:字符串连接的结果太长 01489。 00000 - “字符串连接的结果太长” *原因:字符串连接的结果超过了最大大小。*行动:确保结果小于最大大小。

怎么解决?我试图这样做,但它没有帮助

SUBSTR(listagg(field1 || ', ') WITHIN
GROUP (
        ORDER BY field1
        ), 1, 500) AS field1
4

1 回答 1

1

返回字符串的 SQL 函数的结果必须符合最大限制,即 4000(现在在 Oracle 12c if 中为 32K max_string_size=extended)。

你不能用它来截断它,SUBSTR因为到那时已经太晚了——是LISTAGG函数本身引发了异常。

解决此问题的唯一方法是确保连接的记录数受到限制 - 例如,通过对每个返回的记录数设置最大上限,和/或截断每个记录本身account的长度。field1

于 2015-10-16T02:17:24.373 回答