Няма да можете да отпечатате клоб чрез dbms_output.put_line директно, ако е по-голям от 32767 байта.
Ако случаят е такъв, можете да създадете процедура за итериране през клапата и да разпечатате едно по-малко парче наведнъж. Такава процедура и тестов скрипт са по-долу:
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;
Имайте предвид, че v_chunk_size трябва да доведе до по-малко от 32767 байта, които се разделят на парчета. Ако кодирането ви има 2 байта на знак, ще трябва да използвате (32767/2).