listagg是Oracle 11.2中引入的一个函数!现在这个功能正在困扰我们分配,我们正在从MySQL迁移到Oracle,我们有这个查询:
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;
Run Code Online (Sandbox Code Playgroud)
只要我们知道在Oracle下面有什么烦恼它就会返回VARCAR而不是我们需要的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; …Run Code Online (Sandbox Code Playgroud)