【问题标题】:PL/SQL - DBMS_OUTPUT is wrapping textPL/SQL - DBMS_OUTPUT 正在包装文本
【发布时间】:2017-11-24 03:42:54
【问题描述】:

自从我们公司升级了我们的 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 行的文本被换行/中断

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

有没有人知道为什么会换行以及如何解决?

【问题讨论】:

  • 对我来说很好:imgur.com/a/RTw9W
  • SQL Developer 的哪个版本?我似乎记得在过去看到过这种事情,但无法在 4.2 上复制。
  • 您好,版本为 4.2.0.16.260
  • 您不觉得通过控制台输出生成的报告是一种自取其辱的方式吗?
  • 老实说,这只是我从部门采用的方法。以这种方式的所有数据在更新之前都可以完美输出。

标签: oracle plsql oracle-sqldeveloper dbms-output


【解决方案1】:

您使用的版本 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 中,我也能在不同的地方看到额外的休息时间。您可以通过更改会话线大小来修改它们的显示位置。对于您看到的确切行为,您的 linesize 似乎设置为 762。

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

升级将是一种比尝试解决它更可靠的方法。您可以从the download site 获取当前发布版本。

【讨论】:

  • 谢谢,在运行查询之前设置 linesize 效果很好。我想我可能会在短期内侥幸逃脱,但我会尝试让我的 SQL Developer 长期更新
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 2018-09-08
  • 2014-12-30
  • 2022-10-24
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
相关资源
最近更新 更多