32767バイトを超える場合、dbms_output.put_lineを使用してCLOBを直接印刷することはできません。
この場合、CLOBを反復処理して、一度に1つの小さなチャンクを出力するプロシージャを作成できます。このような手順とテストスクリプトは次のとおりです。
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)を使用する必要があります。