0

分割されたメッセージに関連する問題があります。私のflexcube oracleテーブルには、内部にxmlコードを持つ「Message」というフィールド(列)があり、このメッセージは番号アカウント(別の列)に関連付けられています。つまり、番号アカウントごとにメッセージがあります。

問題は、メッセージが大きすぎると、メッセージが 2 つまたは 3 つのレコード (同じ番号のアカウントを持つ) に分割されることです。ここで、番号アカウントごとにこれらのメッセージの断片をマージして、テーブルに要求したクエリに完全なメッセージを返す必要があります。「メッセージ」列のタイプは 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 に答える