# Formatowanie tabeli wyników w CLI SQL*PLUS

**Komendy wpisujemy w aktualnym oknie 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:

```pl/sql
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ą:

```pl/sql
SET PAGESIZE 100
```

##### Formatowanie kolumn - szerokość komuny

```pl/sql
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ć:

```pl/sql
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:

```pl/sql
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.

##### 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:

```pl/sql
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ć:

```pl/sql
SET TRIMSPOOL ON
SET TAB OFF
```

##### Konwersja typu danych

Jest używany, gdy chcemy jawnie określić typ danych kolumny, np. wymusić określoną długość tekstu dla danych typu varchar

```pl/sql
CAST(wyrażenie AS nowy_typ)
```

Dla ułatwienia można przyjąć że wyrażenie to nazwa kolumny, przykład:

```pl/sql
CAST(FILE_NAME AS VARCHAR2(52)) AS "Sciezka do pliku"
```

##### Pobieranie części tekstu - ucinanie tekstu

Jest używany gdy chcemy całkowicie uciąć kawałek pobieranego tekstu

```pl/sql
SUBSTR(tekst, pozycja_startowa, liczba_znaków)
```

Przykład:

```pl/sql
SUBSTR(FILE_NAME, 1, 20) AS "Sciezka do Pliku"
```

##### Konwersja liczb i dat na tekst

Jest używany gdy chcemy przekonwertować dany wynik liczbowy na tekst (np. dodać do niego końcówkę jednostki bądź spację)

```pl/sql
TO_CHAR(wyrażenie, 'format')
```

Przykład:

```pl/sql
TO_CHAR(bytes/1024/1024, '999999') AS "Size (MB)"
```

### Zmiana separatora kolumn w wynikach

```pl/sql
SET COLSEP 'znak'
```

Przykład:

```pl/sql
SET COLSEP ' | '
```

##### Przykład wykorzystania formatowania wyników:

```pl/sql
SET LINESIZE 500
SET PAGESIZE 50
SET TRIMSPOOL ON
SET TAB OFF
SET WRAP OFF
SET COLSEP ' | '

COLUMN FILE_PATH FORMAT A52 HEADING 'Sciezka do pliku'
COLUMN SIZE_MB FORMAT 999999 HEADING 'Rozmiar pliku w MB'
COLUMN MAX_SIZE_MB FORMAT 999999 HEADING 'Maksymalny rozmiar pliku w MB'
COLUMN AUTO_EXTEND FORMAT A10 HEADING 'Automatyczne powiekszenie pliku'

SELECT 
    CAST(FILE_NAME AS VARCHAR2(52)) AS "Sciezka do pliku",  
    bytes/1024/1024 AS "Rozmiar pliku w MB",
    maxbytes/1024/1024 AS "Maksymalny rozmiar pliku w MB",
    CAST(autoextensible AS VARCHAR2(25)) AS "Automatyczne powiekszenie pliku"
FROM dba_data_files;

```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-03/scaled-1680-/5sDimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-03/5sDimage.png)