PL / SQL - DBMS_OUTPUT包装文本

时间:2017-06-21 09:50:32

标签: oracle plsql oracle-sqldeveloper dbms-output

由于我们公司升级了我们的Oracle SQL Developer版本,因此在使用DBMS_OUTPUT.PUT_LINE将数据输出到DBMS_OUTPUT时,我注意到了一些问题。

我们使用此功能并将其与Excel中的文本到列功能结合使用,以快速生成报告。但是,我发现自更新以来,文本在DBMS_OUTPUT(貌似)中随机强制换行。这对报告的生成是有害的,因为它依赖于与电子表格模板的完美对齐。

我不确定导致此换行的原因,但是为了证明我在下面提供了一个混乱但有希望的有用示例。

如果我以22次运行以下声明作为例子:

begin
DBMS_OUTPUT.PUT_LINE('111111111111111111111111111111111111111111111111111111111111111111111111111');
end;

我们希望输出连续返回75 1,22次。然而,这种情况并非如此。在第11行和第12行,返回以下内容:

11
1111111111111111111111111111111111111111111111111111111111111111111111111

(以上显示第11行的2 1和第12行的73)

再次在第22和23行

111
111111111111111111111111111111111111111111111111111111111111111111111111

(以上显示第11行的3 1和第12行的72)

如您所见,该线在第11行和第22行断开。

应该注意的是,所有其他行格式正确,只有第11行和第22行的文字包装/破坏

当然这不是一个有效的现实世界的例子,但我认为这是解释它的最简单方法。

有没有人知道为什么线条包装以及如何修复它?

1 个答案:

答案 0 :(得分:3)

您使用的版本4.2.0.16是第二个早期采用者版本4.2EA2。此行为was reported as a bug,已在4.2版本(4.2.0.17)中修复。

我可以在4.2.0.16中复制,但不能在4.2.0.17中复制;虽然即使在EA2中,我也会在不同的地方看到额外的休息时间。您可以通过更改会话线宽来修改它们的显示位置。对于您看到的确切行为,您的线条大小设置为762。

设置的最大值为32767我直到第432行才会看到问题,支持与行大小/字符串长度相关(加上一行换行 - 32767/76 = 431.144,所以你得到431在额外不需要的换行符之前的完整行和11行的下一行);当然,这对你的真实场景来说可能还不够好。

升级比尝试解决方案更加重新。您可以从the download site获取当前版本。