Skip to main content

Formatowanie tabeli wyników w CLI SQL*PLUS

Komendy wpisujemy w aktualnym okno SQL*Plus, ustawienia są aktywne tylko per sesja. W razie potrzeby stałe ustawienia należy wpisać do qlogin.sql.

Ustawianie szerokości linii:

Jeżeli chcemy ustawić maksymalną liczbę znaków wyświetlanych w jednym wierszu wyników, używamy polecenia:

SET LINESIZE 500
Liczba wierszy na stronę:

SQL*Plus domyślnie powtarza nagłówki tabeli co pewną liczbę wierszy. Możemy to kontrolować za pomocą:

SET PAGESIZE 100
Formatowanie kolumn - szerokość komuny
COLUMN [NAZWAKOLUMNY] FORMAT A52
COLUMN [NazwaKolumnyLiczbowej] FORMAT 999999

FORMAT AXX - Oznacza ilość znaków w nazwie kolumny
FORMAT XXXXXXX (numery) - Oznacza ilość wyświetlonych znaków liczb.

Zmiana nazw nagłówków kolumn

Jeżeli chcemy, aby kolumny miały czytelniejsze bądź inne nagłówki, możemy użyć:

COLUMN [NazwaKolumny] HEADING '[DocelowaNazwyKolumny]'
Alias dla kolumn - formatowanie poprzez AS

Jeżeli chcemy zmienić nazwę kolumny bez ingerencji w nagłówki, możemy użyć aliasu w zapytaniu:

SELECT 
    [NazwaKolumny] AS "DocelowaNazwaKolumny",
    [NazwaKolumny_w_Bajtach]/1024/1024 AS "NazwaKolumny_W_MB",
FROM [NazwaTabeli];

[NazwaKolumny_w_Bajtach]/1024/1024 AS "NazwaKolumny_W_MB" - oznakowanie /1024/1024 wskazuje podwójne podzielenie wartości bajtów poprzez 1024 co daje najpierw kilobajty a później megabajty.W

Wyłączenie nagłówków co każdą stronę

Przy większych wynikach, co 10 wierszy SQL*Plus dodaje nagłówki kolumn, co może przeszkadzać w diagnostyce:

SET HEADING ON
SET FEEDBACK OFF
Usuwanie zbędnych "białych" znaków

SQL*Plus domyślnie dodaje spacje na końcu wierszy i używa tabulatorów. Możemy to wyłączyć:

SET TRIMSPOOL ON
SET TAB OFF
Przykład wykorzystania:
SET LINESIZE 500
SET PAGESIZE 50
SET TRIMSPOOL ON
SET TAB OFF

COLUMN FILE_NAME FORMAT A52 HEADING 'File Path'
COLUMN FILESIZE_MB FORMAT 999999 HEADING 'Size_MB'
COLUMN MAX_FILESIZE_MB FORMAT 999999 HEADING 'Max_Size_MB'
COLUMN AUT FORMAT A4 HEADING 'Auto'

SELECT 
    file_name AS "File Path",
    bytes/1024/1024 AS "Size_MB",
    maxbytes/1024/1024 AS "Max_Size_MB",
    autoextensible AS AUT
FROM dba_data_files;