【问题标题】:XMLAGG throwing ORA-1489 - can't figure out whyXMLAGG 抛出 ORA-1489 - 不知道为什么
【发布时间】:2019-04-12 06:54:19
【问题描述】:

我需要连接表中的 3 列,用分号分隔。经过研究,我决定使用 xmlagg 和 getclobval() - 它工作正常,直到本周早些时候,当它开始抛出 ORA-1489 - 字符串连接的结果太长。我使用 xmlagg 和 getclobval() 来专门避免这种情况。目前,我仍在努力寻找有问题的行,但我希望有人能确保我的代码是正确的。谢谢!

select id, 
   rtrim(extract(xmlagg(xmlelement(e, col1 || ';  ' || col2 || ';  ' || col3 || '; ')), 
           '/E/text()').getclobval(), chr(13)) AS concat_field from schema.table group by id

【问题讨论】:

标签: sql oracle concatenation


【解决方案1】:

如果 col1+col2+col3+separators > 4000 的长度,则连接会引发错误。 col1 || '; ' || col2 || '; ' || col3 || '; '
解决方案:to_clob

select id, 
   rtrim(extract(xmlagg(xmlelement(e, to_clob(col1) || ';  ' || col2 || ';  ' || col3 || '; ')), 
           '/E/text()').getclobval(), chr(13)) AS concat_field from schema.table group by id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2015-11-09
    • 2017-07-08
    • 2023-03-17
    • 2013-05-16
    相关资源
    最近更新 更多