Недостаточно заставить sqlplus не переносить строки. Также необходимо указать зрителю, что вы используете для просмотра файла спула, чтобы не переносить строки. Если ваш зритель - less
то -S
вариант, который вы должны использовать в соответствии с
https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less . В Unix / Linux вы можете использовать, 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
в противном случае каждая строка в спулфиле заполняется пробелами, пока не будет достигнут размер строки.
SET TRIMOUT ON
в противном случае каждая строка в выводе заполняется пробелами, пока не будет достигнут размер строки.
SET WRAP OFF
Обрезает строку, если она длиннее, чем LINESIZE. Этого не должно быть, если размер строки достаточно велик.
SET TERMOUT OFF
подавляет вывод результатов на вывод. Строки все еще записываются в файл спула. Это может значительно ускорить время выполнения заявления.
SET PAGESIZE 0
установить бесконечный размер страницы и избегать заголовков, заголовков и так далее.
- Есть и другие
SET
параметры, касающиеся вывода (NUMWIDTH, NUMFORMAT, LONG, COLSEP) и производительности (ARRAYSIZE, LONGCHUNKSIZE).
Вы должны использовать COLUMN
команду для форматирования отдельных столбцов.
Например column name format a30
, name
максимальная длина столбца в выходных данных будет 30 символов.
Если вы хотите, чтобы размер экрана не был фиксированным, но он должен быть равен размеру фактического значения столбцов в строке, тогда я знаю только один способ - изменить предложение select вашего оператора, чтобы получить желаемый результат и использовать оператор конкатенации строк ||
, например
select emp_id||' '||first_name||' '||last_name
from emp;
Полное описание всех переменных можно найти в руководстве пользователя и справочнике по SQL * Plus .
Если вы хотите повторно использовать некоторые настройки (или определения COLUMN), вы можете сохранить их в файле и запустить этот файл, когда они вам понадобятся снова. Вы даже можете запустить этот файл автоматически, если вы запустите sqlplus.
(1) «Как найти максимальное значение LINESIZE (зависит от системы) (ID документа 1547262.1)»