如果您显示 LONG 列并且它们的值包含换行符,那么将为这些列值打印多行,并且您不能用 sqlplus 设置否决这一点。
以下 sqlplus 命令可能有用:
SET LINESIZE linesize线的长度。在大多数情况下,最大值linesize是 32767。如果您将 LINESIZE 设置为无效值并检查错误消息,您可以找出最大值,因此SET LINESIZE 0可能会给出SP2-0267: linesize option 0 out of range (1 through 32767) (1)
SET TRIMSPOOL ON否则 spoolfile 中的每一行都用空白填充,直到达到 linesize。
SET TRIMOUT ON否则输出中的每一行都用空白填充,直到达到 linesize。
SET WRAP OFF如果行长于 LINESIZE,则截断该行。如果 linesize 足够大,则不会发生这种情况。
SET TERMOUT OFF禁止将结果打印到输出。这些行仍被写入假脱机文件。这可能会大大加快语句的执行时间。
仅强制 sqlplus 不换行是不够的。还需要告诉查看器您用于查看假脱机文件时不要换行。如果您的查看器是您必须根据 https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less 使用
less
的选项。在 Unix/Linux 上,您可以使用来获取文件的第一行,然后检查这是否符合预期,或者您可以使用 来查看换行符实际放置在输出文件中的位置。-S
head -1 output.txt
od -c output.txt|head
如果您显示 LONG 列并且它们的值包含换行符,那么将为这些列值打印多行,并且您不能用 sqlplus 设置否决这一点。
以下 sqlplus 命令可能有用:
SET LINESIZE linesize
线的长度。在大多数情况下,最大值linesize
是 32767。如果您将 LINESIZE 设置为无效值并检查错误消息,您可以找出最大值,因此SET LINESIZE 0
可能会给出SP2-0267: linesize option 0 out of range (1 through 32767)
(1)SET TRIMSPOOL ON
否则 spoolfile 中的每一行都用空白填充,直到达到 linesize。SET TRIMOUT ON
否则输出中的每一行都用空白填充,直到达到 linesize。SET WRAP OFF
如果行长于 LINESIZE,则截断该行。如果 linesize 足够大,则不会发生这种情况。SET TERMOUT OFF
禁止将结果打印到输出。这些行仍被写入假脱机文件。这可能会大大加快语句的执行时间。SET PAGESIZE 0
设置无限的页面大小并避免标题、标题等。SET
参数与输出(NUMWIDTH、NUMFORMAT、LONG、COLSEP)和性能(ARRAYSIZE、LONGCHUNKSIZE)有关。您必须使用该
COLUMN
命令来格式化各个列。例如,
column name format a30
将输出中的列格式化name
为最大长度为 30 个字符。如果您希望显示大小不固定,但它应该等于一行中列的实际值的大小,那么我知道的唯一方法是更改语句的 select 子句以获得所需的结果并使用字符串连接运算符
||
,例如所有变量的完整描述可以在SQL*Plus 用户指南和参考中找到。
如果您想重用某些设置(或 COLUMN 定义),您可以将它们存储在一个文件中,并在再次需要它们时运行此文件。如果你启动 sqlplus,你甚至可以自动运行这个文件。
(1) “如何找到 LINESIZE 最大值(取决于系统)(文档 ID 1547262.1)”
您需要设置以下内容:
你可以这样设置