dbms_output
を使用して動的クエリをデバッグしようとしましたが、クエリ文字列がdbms_output
バッファーに対して長すぎるようです。
私は得た:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "SYS.DBMS_OUTPUT", line 148
ORA-06512: at line 1
バッファサイズを増やす方法はありますか?
DBMS_OUTPUTを有効にして、バッファサイズを設定できます。バッファサイズは1〜1,000,000です。
dbms_output.enable(buffer_size IN INTEGER DEFAULT 20000);
exec dbms_output.enable(1000000);
チェックthis
[〜#〜] edit [〜#〜]
フランクとマットが投稿したコメントによると、Nullで有効にすることもできます
exec dbms_output.enable(NULL);
buffer_size:バッファリングされた情報の量の上限(バイト単位)。 buffer_sizeをNULLに設定すると、制限がなくなります。ユーザーがbuffer_size(NOT NULL)を指定した場合、最大サイズは1,000,000、最小サイズは2,000です。
バッファサイズがいっぱいになると。あなたが試すことができるいくつかのオプションがあります:
1)DBMS_OUTPUTバッファーのサイズを1,000,000に増やす
2)バッファに書き込まれたデータをフィルタリングしてみます-DBMS_OUTPUTに書き込むループがある可能性があり、このデータは必要ありません。
3)コード内のさまざまなチェックポイントでENABLEを呼び出します。呼び出しごとにバッファがクリアされます。
DBMS_OUTPUT.ENABLE(NULL)は、後方互換性のためにデフォルトで20000になります dbms_outputのOracleドキュメント
以下のスニペットのようなカスタム出力display.somethingを作成することもできます
create or replace procedure cust_output(input_string in varchar2 )
is
out_string_in long default in_string;
string_lenth number;
loop_count number default 0;
begin
str_len := length(out_string_in);
while loop_count < str_len
loop
dbms_output.put_line( substr( out_string_in, loop_count +1, 255 ) );
loop_count := loop_count +255;
end loop;
end;
リンク-Ref: dbms_output.putlineの代替 @ By:Alexander
どうぞ:
DECLARE
BEGIN
dbms_output.enable(NULL); -- Disables the limit of DBMS
-- Your print here !
END;