dbms_output.put_line
一度に 2000 文字を超える文字を印刷できないこの現象に気付いた人はいますか?
スクリプトは次のとおりです。
set serveroutput on size 100000;
declare
big_str varchar2(2009);
begin
for i in 1..2009 loop
big_str := big_str||'x';
end loop;
dbms_output.put_line(length(big_str));
dbms_output.put_line(big_str);
end;
/
出力をコピーしてエディター (メモ帳++) に貼り付けたところ、2009 文字ではなく、2000 文字しかないことがわかりました。これは、いくつかのテスト スクリプトでも発生します。2000 文字しか出力されません。
次のように印刷する回避策があります。
dbms_output.put_line(length(big_str));
dbms_output.put_line(substr(big_str,1,1999));
dbms_output.put_line(substr(big_str,2000));
これにより、出力に新しい行が追加され、作業しているテキストが事前にフォーマットされていると読みにくくなります。
他の誰かがこれに気づきましたか?それは本当にバグですか、それともある種のあいまいな機能ですか? より良い回避策はありますか? これに関する他の情報はありますか?
Oracle のバージョン: 10.2.0.3.0、PL/SQL Developer (Allround Automation から) を使用。