【发布时间】:2009-11-19 22:22:15
【问题描述】:
有没有其他人注意到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;
/
我将输出复制并粘贴到编辑器 (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));
这会在输出中添加新行,当您正在处理的文本被预先格式化时,难以阅读。
有没有其他人注意到这一点?它真的是一个错误或某种晦涩的功能吗?有更好的解决方法吗?还有其他关于这方面的信息吗?
Oracle 版本为:10.2.0.3.0,使用 PL/SQL Developer(来自 Allround Automation)。
【问题讨论】:
-
从未尝试过 - 这是 QA 的大量输出。这是动态 SQL 的吗?
-
是什么让您认为这是一个错误?也许 put_line 被设计限制为 2000 个字符。
-
@Skaffman:我在 put_line 文档中没有看到任何说明将打印不超过 2000 个字符的内容。此外,如果有 2000 个字符的硬限制并且我超过了它,我希望会抛出一个错误,而不是让 2000 之后的所有字符都被静默删除。
-
@OMG Ponies:当我注意到正在打印的数据与加载的数据不匹配时,我发现了这一点。我知道这张表中有一些记录会很长,我正在调查以找出有多少,并获取其中少数记录的详细信息。
标签: oracle plsql plsqldeveloper