Não basta forçar o sqlplus a não quebrar linhas. Também é necessário informar ao visualizador que você usa para exibir o arquivo de spool para não quebrar as linhas. Se o seu espectador é less
, em seguida, -S
a opção que você tem que usar de acordo com
https://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less . No Unix / Linux, você pode usar head -1 output.txt
para obter a primeira linha de um arquivo e, assim, verificar se isso é o esperado ou pode od -c output.txt|head
ver para onde as quebras de linha são realmente colocadas no seu arquivo de saída.
Se você exibir colunas LONG e seus valores contiverem quebras de linha, várias linhas serão impressas para esses valores de coluna e você não poderá substituí-lo nas configurações do sqlplus.
Os seguintes comandos sqlplus podem ser úteis:
SET LINESIZE linesize
o comprimento da linha. Na maioria dos casos, o valor máximo para linesize
é 32767. Você pode descobrir o seu valor máximo se definir LINESIZE com um valor inválido e verificar a mensagem de erro, para SET LINESIZE 0
fornecer SP2-0267: linesize option 0 out of range (1 through 32767)
(1)
SET TRIMSPOOL ON
caso contrário, todas as linhas no arquivo de spool serão preenchidas com espaços em branco até que o tamanho da linha seja atingido.
SET TRIMOUT ON
caso contrário, cada linha na saída será preenchida com espaços em branco até que o tamanho da linha seja atingido.
SET WRAP OFF
Trunca a linha, se for maior que LINESIZE. Isso não deve acontecer se o tamanho da linha for grande o suficiente.
SET TERMOUT OFF
suprime a impressão dos resultados na saída. As linhas ainda são gravadas no arquivo de spool. Isso pode acelerar muito o tempo de execução de uma declaração.
SET PAGESIZE 0
para definir um tamanho de página infinito e evitar títulos, títulos e assim por diante.
- Existem outros
SET
parâmetros relacionados à saída (NUMWIDTH, NUMFORMAT, LONG, COLSEP) e desempenho (ARRAYSIZE, LONGCHUNKSIZE).
Você precisa usar o COLUMN
comando para formatar colunas individuais.
Por exemplo column name format a30
, formatará a coluna name
na saída com um comprimento máximo de 30 caracteres.
Se você deseja que o tamanho da exibição não seja corrigido, mas deve ser igual ao tamanho do valor real de uma coluna em uma linha, a única maneira que eu sei é que você altera a cláusula select da sua instrução para obter o resultado desejado e usar o operador de concatenação de cadeias ||
, por exemplo
select emp_id||' '||first_name||' '||last_name
from emp;
Uma descrição completa de todas as variáveis pode ser encontrada no Guia e Referência do Usuário do SQL * Plus .
Se você deseja reutilizar algumas configurações (ou definições COLUMN), é possível armazená-las em um arquivo e executá-lo quando precisar delas novamente. Você pode executar esse arquivo automaticamente se iniciar o sqlplus.
(1) "Como encontrar o valor máximo de LINESIZE (depende do sistema) (ID do documento 1547262.1)"