listaggはOracle 11.2で導入された関数です!今、この関数は、私たちが割り当てる盗聴され、我々は、MySQLからOracleに移行すると、私たちは、このクエリを持っている:Oracleのlistaggの代わりに?
SELECT
p_id,
MAX(registered) AS registered,
listagg(MESSAGE, ' ') within GROUP (ORDER BY registered) AS MESSAGE
FROM
umm_parent_id_remarks_v m
GROUP BY
m.p_id;
がある限り、我々は何を私たちを盗聴 を知っているとして、MySQLでは正常に動作し、それはVARCARを返し、ないOracleの下にあり、私たちが必要とするCLOB! テキストが巨大で、私たちはそれがCLOBである必要があります!
ここで私は何をしようとしています!
CLOBタイプのCLOB_Tテーブルを作成してください!私はそれを実行した場合
は、今機能
create or replace
function listaggclob (t in clob_t)
return clob
as
ret clob := '';
i number;
begin
i := t.first;
while i is not null loop
if ret is not null then
ret := ret || ' ';
end if;
ret := ret || t(i);
i := t.next(i);
end loop;
return ret;
end;
を作成します。
SELECT
p_id,
MAX(registered) AS registered,
listaggclob(cast(collect (MESSAGE) as clob_t)) MESSAGE
FROM
umm_parent_id_remarks_v m
GROUP BY
m.p_id;
私が手
ORA-22814:属性または要素の値は、タイプで指定されたよりも大きく、
解決方法はありますか?あなた
+1収集リンクありがとうございます! – tbone
私自身の機能を書いて、私の質問を更新しました。再度質問をしてください、ありがとう –
私はなぜあなたがそのエラーを受けているのか分かりません - それはおそらく新しい質問として投稿する価値があります、そのようにそれを見て。 –