我遇到与分割邮件有关的问题。 我的flexcube oracle表有一个名为'Message'的字段(列),其中包含xml代码,此消息与一个数字帐户(另一列)相关,即每个数字帐户都有一条消息。
问题是当邮件太大时,邮件会被拆分为两个或三个记录(具有相同的帐号)。 现在,我必须为每个数字帐户合并这些消息片段,以将完整的消息返回到我向我的表格询问的查询。 我的“消息”列的类型为CLOB。
我开始使用ListAgg()函数,但是存在大小问题(4000个字符)。 我希望我很清楚。请帮帮我。
提前致谢。
答案 0 :(得分:0)
我推荐这篇关于字符串聚合的文章,也许其中一种技术适合你?
http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php#specific_function
此外,编写用户定义的分析函数是可能的 - 也许您会考虑编写自己的分析函数,这将产生CLOB结果(不确定CLOB是否是此处的选项,但您可以尝试)。有关该主题的更多信息:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14289/dciaggfns.htm
编辑:嗯,你有没有尝试谷歌搜索?这是我发现的,似乎有效:
SELECT
DBMS_XMLGEN.CONVERT(
EXTRACT(
xmltype('<?xml version="1.0"?><document>' || XMLAGG(XMLTYPE('<V>' || DBMS_XMLGEN.CONVERT(message)|| '</V>')).getclobval()||'</document>'),
'/document/V/text()').getclobval(), 1) AS data_value
FROM
account_messages
GROUP BY
account_no;
我不是作者,代码来自:http://sonra.io/listagg-with-clob-string-aggregation-exceeding-4000-characters-with-xmlagg/