0

我有一个与拆分消息有关的问题。我的 flexcube oracle 表有一个名为“消息”的字段(列),其中包含 xml 代码,并且该消息与一个号码帐户(另一列)相关,即每个号码帐户都有一条消息。

问题是当消息太大时,消息被拆分为两个或三个记录(具有相同的号码帐户)。现在我必须为每个号码帐户合并这些消息片段,以将完整的消息返回到我向我的表询问的查询。我的“消息”列的类型为 CLOB。

我开始使用 ListAgg() 函数,但存在大小问题(4000 个字符)。我希望我是清楚的。请帮我。

提前致谢。

4

1 回答 1

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/

于 2013-10-08T12:32:42.503 回答