我有一个包含2个字段的表:
1) id -数字
2)说明-克隆
此表有多个行用于一个特定的ID。我想使用此表创建另一个表,该表将List<List<? super T>>
行合并为一个特定ID。我正在尝试使用下面的sql来合并行-
clob
但这给我 SELECT id,
rtrim(xmlagg(xmlelement(e,
description,
CHR (10) || CHR (10) ).extract('//text()')
order by rowid).GetClobVal(),chr(10)||chr(10))
description2
FROM table a
GROUP BY id
错误。有解决此问题的解决方法吗?
ORA-22813:操作数超出系统限制
答案 0 :(得分:0)
错误的描述和操作如下:
ORA-22813 :操作数超出系统限制。
原因:对象或集合的值太大。在SORT上下文中,值的大小可能已超过30k,或者大小可能是 对于可用内存太大。
操作:选择另一个值,然后重试该操作。
但是,我们可以跳过连接后大于30K的那些记录。意思是我们可以显示“ ERROR IN CONCATENATION”,而不是实际的串联,因为这是不可能的。
尝试以下。它应该为您工作。
SELECT
ID,
CASE
WHEN SUM((DBMS_LOB.GETLENGTH("DESCRIPTION"))) / 1024 < 30
THEN
RTRIM(XMLAGG(XMLELEMENT(E, DESCRIPTION, CHR(10)
|| CHR(10)).EXTRACT('//text()') ORDER BY
ROWID
).GETCLOBVAL(), CHR(10)
|| CHR(10))
ELSE TO_CLOB('ERROR IN CONCATENATION')
END AS DESCRIPTION2
FROM
TABLEA
GROUP BY
ID;
这是功能有限的解决方法。
考虑到可能对您有用的信息,发布了答案。
干杯!