1

自从我们公司升级了我们的 Oracle SQL Developer 版本后,我在使用 DBMS_OUTPUT.PUT_LINE 将数据输出到 DBMS_OUTPUT 时发现了一些问题。

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

我不确定是什么导致了这个换行符,但为了证明我在下面提供了一个混乱但希望有用的例子。

例如,如果我运行以下语句 22 次:

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

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

11
1111111111111111111111111111111111111111111111111111111111111111111111111

(上面在第 11 行显示 2 个 1,在第 12 行显示 73)

再次在第 22 和 23 行

111
111111111111111111111111111111111111111111111111111111111111111111111111

(上面在第 11 行显示 3 个 1,在第 12 行显示 72)

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

应该注意的是,所有其他行的格式都正确,只有第 11 行和第 22 行的文本是换行/中断的

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

有没有人知道为什么线条会换行以及如何修复它?

4

1 回答 1

3

您使用的版本 4.2.0.16 是第二个早期采用者版本 4.2EA2。此行为被报告为错误,并在 4.2 发行版 (4.2.0.17) 中得到修复。

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

最多设置 32767 行,直到第 432 行才看到问题,它支持与行大小/字符串长度相关(换行加一 - 32767/76 = 431.144,所以你得到 431 完整行和 11多余的不需要的换行符之前的下一行);当然,这对于您的实际情况可能还不够好。

与尝试解决它相比,升级将是一种更强大的方法。您可以从下载站点获取当前发行版本。

于 2017-06-21T11:23:13.347 回答