嗨,我正在尝试执行下面的查询,它使用listag函数。查询会给出结果,但当我尝试从网格中提取更多记录或尝试获取记录计数时,它会给出错误:ora-01489:字符串串联的结果太长。
查询:
SELECT sceng_eng_id AS eng_id,
SUBSTRB(LISTAGG(sceng_pr_eid, ',') WITHIN GROUP (ORDER BY sceng_eng_id,sceng_pr_eid),1,100) secengs,
SUBSTR(LISTAGG(sceng_eng_nme, ',') WITHIN GROUP (ORDER BY sceng_eng_id,sceng_pr_eid),1,256) secengnme
FROM seceng group by sceng_eng_id
任何帮助都将不胜感激
2条答案
按热度按时间zkure5ic1#
这是一个有点长的评论。
两件事正在发生。首先,oracle将字符串的长度限制为2000个字符。第二,oracle通常在行可用时返回行,而不是生成整个结果集。
所以,我怀疑前几行是好的——结果字符串首先在极限处。然而,当引擎遍历数据时,它偶然发现一个坏行。
您可以使用以下方法找出导致此问题的值:
不清楚你想做什么;也许您可以修复数据,或者有其他选择。
l5tcr1uw2#
您可以使用on overflow truncate“…”来防止错误,它将在达到限制之前剪切生成的字符串。但请注意,在这种情况下,它将被削减。