Che brutta cosa da fare.
Sono tutti dati di caratteri o hai anche valori numerici e/o data/ora? In tal caso, quale formato desideri utilizzare per quei tipi di dati quando li converti in stringhe.
Potrebbe anche essere necessario pensare ai delimitatori di campo e record.
Hai considerato XML?
declare
v_clob clob;
v_xml xmltype;
begin
select xmlagg(XMLELEMENT("test",xmlforest(id,val)))
into v_xml
from test;
select v_xml.getclobval
into v_clob
from dual;
dbms_output.put_line(v_clob);
end;
/