[Oracle] DBMS_OUTPUTの出力制限の緩和 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

しばらく 10gR1 を使っていたため気づかなかったのですが、10gR2 から DBMS_OUTPUT パッケージの出力制限が大幅に緩和されているようです。

【1行の長さ】
10gR1
最大 255バイト
10gR2 以降
最大 32767バイト

出力バッファサイズ
10gR1
デフォルト:20000、最小:2000、最大:10000000
10gR2 以降
デフォルト:20000、最小:2000、最大:10000000、無制限


まず、1行の長さについては、10gR1 では 255バイトを超えると以下のようなエラーが発生していたため、

ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line

255バイトを超える場合は SUBSTR関数などを使って文字列を区切って出力していたりしていましたが、10gR2 からはこのような配慮が不要になります。


そして、出力バッファサイズについては、10gR1 では出力データ量が 2000バイトを超えると以下のようなエラーが発生していたため、

ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes

DBMS_OUTPUT.ENABLE()関数を使って出力バッファサイズを拡張していましたが、その最大サイズが 10000000バイトとなっていたため、これを超えることがないよう配慮しなければなりませんでした。

ところが、これも 10gR2 からは無制限という指定ができるようになったため、出力量に対する配慮が不要になります。


だからといって、不用意に大量のデータを出力するようなことは避けたほうがよいとは思いますが、余計なことに気を使わなくてもよくなるのはありがたいですね。