我有一个与拆分消息有关的问题。我的 flexcube oracle 表有一个名为“消息”的字段(列),其中包含 xml 代码,并且该消息与一个号码帐户(另一列)相关,即每个号码帐户都有一条消息。
问题是当消息太大时,消息被拆分为两个或三个记录(具有相同的号码帐户)。现在我必须为每个号码帐户合并这些消息片段,以将完整的消息返回到我向我的表询问的查询。我的“消息”列的类型为 CLOB。
我开始使用 ListAgg() 函数,但存在大小问题(4000 个字符)。我希望我是清楚的。请帮我。
提前致谢。
我有一个与拆分消息有关的问题。我的 flexcube oracle 表有一个名为“消息”的字段(列),其中包含 xml 代码,并且该消息与一个号码帐户(另一列)相关,即每个号码帐户都有一条消息。
问题是当消息太大时,消息被拆分为两个或三个记录(具有相同的号码帐户)。现在我必须为每个号码帐户合并这些消息片段,以将完整的消息返回到我向我的表询问的查询。我的“消息”列的类型为 CLOB。
我开始使用 ListAgg() 函数,但存在大小问题(4000 个字符)。我希望我是清楚的。请帮我。
提前致谢。
我推荐这篇关于字符串聚合的文章,也许其中一种技术适合你?
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/