Sie können einen Clob nicht direkt mit dbms_output.put_line drucken, wenn er größer als 32767 Bytes ist.
Wenn dies der Fall ist, können Sie eine Prozedur erstellen, um den Clob zu durchlaufen und jeweils einen kleineren Teil auszudrucken. Ein solches Verfahren und Testskript finden Sie unten:
declare
c clob;
procedure print_clob( p_clob in clob ) is
v_offset number default 1;
v_chunk_size number := 10000;
begin
loop
exit when v_offset > dbms_lob.getlength(p_clob);
dbms_output.put_line( dbms_lob.substr( p_clob, v_chunk_size, v_offset ) );
v_offset := v_offset + v_chunk_size;
end loop;
end print_clob;
begin
for i in 1..10000 loop
c := c || 'test';
end loop;
--This will result in ora-06502
--dbms_output.put_line(c);
print_clob(c);
end;
Beachten Sie, dass v_chunk_size dazu führen muss, dass weniger als 32767 Bytes gleichzeitig aufgeteilt werden. Wenn Ihre Codierung 2 Bytes pro Zeichen hat, müssen Sie (32767/2) verwenden.