長すぎる:LISTAGG機能とORA-01489:私は次のクエリを実行すると、文字列連結の結果が
Select
tm.product_id,
listagg(tm.book_id || '(' || tm.score || ')',',')
within group (order by tm.product_id) as matches
from
tl_product_match tm
where
tm.book_id is not null
group by
tm.product_id
Oracleは、次のエラーを返します。
ORA-01489: result of string concatenation is too long
は、私が知っている理由はそれということlistagg関数が、サポートされていない4000文字を超える値を連結しようとしていることが原因です。
ここに記載された代替の例 - http://www.oracle-base.com/articles/misc/string-aggregation-techniques.phpを見ましたが、それらはすべて関数またはプロシージャを使用する必要があります。
標準のJDBCを使用して関数またはストアドプロシージャを呼び出して値を読み取る必要がなく、純粋なSQLのソリューションがありますか?
私が持っている他の難しさは、私が見たほとんどの文字列集約の例は、値をそのまま読み込む方法の例を示しています。私の例では、まず値を変更しています(つまり、2つの列を集約しています)。
これらのソリューションのいずれもがCLOBを返すことをサポートし、PL/SQLオブジェクトの作成を必要としないことは明らかです。どちらの基準を満たしていると思われるページのオプションはどれですか? –