oracle pl/sql bug:不能put_line超过2000个字符

Fru*_*ner 3 oracle plsql plsqldeveloper

有没有人注意到这种现象一次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;

/
Run Code Online (Sandbox Code Playgroud)

我将输出复制并粘贴到编辑器(Notepad ++)中,该编辑器告诉我只有2000个字符,而不是2009年我认为应该粘贴的字符.我的一些测试脚本也会出现这种情况 - 只打印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));
Run Code Online (Sandbox Code Playgroud)

这会在输出中添加新行,使您在使用文本时预先格式化时难以阅读.

有没有其他人注意到这一点?它真的是一个错误或某种模糊的功能吗?有更好的解决方法吗?那里有其他任何信息吗?

Oracle版本是:10.2.0.3.0,使用PL/SQL Developer(来自Allround Automation).

Dav*_*vid 10

这不是对Oracle或put_line的限制,这是IDE的限制.

从Oracle文档:http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_output.htm#ARPLS036

规则和限制

  • 最大行大小为32767字节.
  • 默认缓冲区大小为20000字节.最小大小为2000字节,最大值为无限制.

您可以使用SQL*Plus进行测试.

您看到2000的事实让我相信您的IDE中有一个设置将其设置为最小值.