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中有一个设置将其设置为最小值.