SQL Developer 中的 dbms_output 硬限制

abc*_*134 6 oracle oracle-sql-developer

我在使用 SQL Developer 时遇到问题 - 无法设置dbms_output大于 1 000 000 个符号的缓冲区,但它在 SQL*Plus 中有效。这个脚本:

SET SERVEROUTPUT ON SIZE UNLIMITED

    BEGIN
       for c in (SELECT rpad('a',1000,'a') ll from dual connect by level <=2001) loop
         dbms_output.put_line (c.ll);
       end loop;  
       dbms_output.put_line ('www');
    END;
    /  
Run Code Online (Sandbox Code Playgroud)

在 SQL*Plus 中工作,但失败:

ORA-20000:ORU-10027:缓冲区溢出,限制为 1000000 字节
ORA-06512:在“SYS.DBMS_OUTPUT”,第 32 行
ORA-06512:在“SYS.DBMS_OUTPUT”,第 97 行
ORA-06512:在“SYS.DBMS_OUTPUT”,第 112 行
ORA-06512:在第 3 行

在 SQL Developer 中。

我尝试dbms_output在 SQL Developer 中使用视图并将大小设置为无限制,如here所述,但打印了相同数量的符号并且没有“www”行。SQL Developer 的版本是 4.03.16。这是一个已知问题吗?

Bal*_*app 7

在 SQL Developer 中,SET SERVEROUTPUT ON SIZE UNLIMITED将缓冲区设置为最大值 1000000 而不是无限制(使用 12.1.0.2.161018 数据库和 SQL Developer 4.1.5.21 测试)。您可以使用 SQL 跟踪轻松确认这一点。

作为替代方案,以下确实将缓冲区设置为无限制:

begin
  dbms_output.enable(null);
end;
/
Run Code Online (Sandbox Code Playgroud)