|
|
Formattering av utskrift i SQL*Plus
Kommando | | Exempel | | Beskrivning |
COLUMN | | COLUMN ename FORMAT a5 | | Kortar ner alla utskrifter av kolumnen ename till 5 tecken. |
HEADING | | set HEADING off | | Ser till att kolumnernas namn inte skrivs ut. |
LINESIZE | | set LINESIZE 120 | | Skriver ut 120 tecken på varje rad. |
WRAP | | set WRAP off | | Ser till varje tabellrad endast skrivs på en rad i utskriften. |
BREAK | | BREAK ON deptno | | När vi sorterar på deptno skrivs inga dubletter ut. |
NULL | | set NULL Null | | Då en kolumn innehåller NULL skrivs Null ut. |
COLSEP | | set COLSEP ";" | | Lägger in ett semikolon mellan alla kolumner. |
|
Utskrifter i SQL*Plus kan vara lite svårlästa, men med hjälp av några kommandon kan du bestämma hur du vill att de ska se ut. För att ha något att referera till skriver vi ut innehållet i emp helt oformatterad:
SQL> SELECT * FROM emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 1980-12-17 800
20
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300
30
7521 WARD SALESMAN 7698 1981-02-22 1250 500
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7566 JONES MANAGER 7839 1981-04-02 2975
20
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400
30
7698 BLAKE MANAGER 7839 1981-05-01 2850
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7782 CLARK MANAGER 7839 1981-06-09 2450
10
7788 SCOTT ANALYST 7566 1987-04-19 3000
20
7839 KING PRESIDENT 1981-11-17 5000
10
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7844 TURNER SALESMAN 7698 1981-09-08 1500 0
30
7876 ADAMS CLERK 7788 1987-05-23 1100
20
7900 JAMES CLERK 7698 1981-12-03 950
30
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7902 FORD ANALYST 7566 1981-12-03 3000
20
7934 MILLER CLERK 7782 1982-01-23 1300
10
14 rader.
|
COLUMN
Med kommandot COLUMN kan du bestämma formatet på dina utskrifter. Kommandot har följande syntax:
COLUMN {col} FORMAT {form} [HEADING {head}]
|
Vi kan miska bredden på en kolumn genom att:
- För textdatatyper skriver man a#, där # är så många tecken man vill ha.
- För numeriska datatyper skriver man 99999, där varje 9a representerar en siffra.
Vi formatterar några kolumner i emp:
SQL> COLUMN mgr FORMAT 9999
SQL> COLUMN comm FORMAT 9999
SQL> COLUMN deptno FORMAT 999
SQL> COLUMN ename FORMAT a6
SQL> SELECT * FROM emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------ --------- ----- ---------- ---------- ----- ------
7369 SMITH CLERK 7902 1980-12-17 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7782 CLARK MANAGER 7839 1981-06-09 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7839 KING PRESIDENT 1981-11-17 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------ --------- ----- ---------- ---------- ----- ------
7900 JAMES CLERK 7698 1981-12-03 950 30
7902 FORD ANALYST 7566 1981-12-03 3000 20
7934 MILLER CLERK 7782 1982-01-23 1300 10
14 rader.
|
HEADING
Med HEADING kan man stänga av utskriften av kolumnnamnen. Detta är bra om man vill skriva data till en fil som sedan ska importeras i någon annan databas.
Se följande exempel:
SQL> set HEADING off
SQL> SELECT * FROM emp;
7369 SMITH CLERK 7902 1980-12-17 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7782 CLARK MANAGER 7839 1981-06-09 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7839 KING PRESIDENT 1981-11-17 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 1100 20
7900 JAMES CLERK 7698 1981-12-03 950 30
7902 FORD ANALYST 7566 1981-12-03 3000 20
7934 MILLER CLERK 7782 1982-01-23 1300 10
14 rader.
|
LINESIZE
Med LINESIZE kan man förändra hur många tecken som skrivs ut på varje rad. Per default skrivs 80 tecken per rad. Om man vill skriva ut data till en fil är det bra att sätta denna variabel till ett mycket högt nummer, så att inte strängar klipps av mitt i.
Se följande exempel:
SQL> set LINESIZE 120
SQL> SELECT * FROM emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850 30
7782 CLARK MANAGER 7839 1981-06-09 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 3000 20
7839 KING PRESIDENT 1981-11-17 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7900 JAMES CLERK 7698 1981-12-03 950 30
7902 FORD ANALYST 7566 1981-12-03 3000 20
7934 MILLER CLERK 7782 1982-01-23 1300 10
14 rader.
|
Vi ser att alla kolumner nu visas på samma rad.
WRAP
Detta kommando ser till att varje tabellrad endast skrivs på en rad i utskriften. Om all text inte får plats klipps den.
Vi tittar på ett exempel:
SQL> set WRAP off
SQL> SELECT * FROM emp;
kapad (som begärt) före kolumn DEPTNO
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 800
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300
7521 WARD SALESMAN 7698 1981-02-22 1250 500
7566 JONES MANAGER 7839 1981-04-02 2975
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400
7698 BLAKE MANAGER 7839 1981-05-01 2850
7782 CLARK MANAGER 7839 1981-06-09 2450
7788 SCOTT ANALYST 7566 1987-04-19 3000
7839 KING PRESIDENT 1981-11-17 5000
7844 TURNER SALESMAN 7698 1981-09-08 1500 0
7876 ADAMS CLERK 7788 1987-05-23 1100
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
7900 JAMES CLERK 7698 1981-12-03 950
7902 FORD ANALYST 7566 1981-12-03 3000
7934 MILLER CLERK 7782 1982-01-23 1300
14 rader.
|
I exemplet ovan ser vi att kolumnen DEPNO inte fick plats och skrivs därför inte ut.
BREAK
Om man sorterar på en speciell kolumn kan man öka läsbarheten genom att använda BREAK, som gör att endast ett av varje unikt värde skrivs ut för den aktuella kolumnen.
BREAK ON {col} [SKIP {nr}]
|
Ett exempel på BREAK:
SQL> BREAK ON deptno
SQL> SELECT deptno, ename FROM emp ORDER BY deptno;
DEPTNO ENAME
---------- ----------
10 CLARK
KING
MILLER
20 SMITH
ADAMS
FORD
SCOTT
JONES
30 ALLEN
BLAKE
MARTIN
DEPTNO ENAME
---------- ----------
30 JAMES
TURNER
WARD
14 rader.
|
Värdet efter SKIP bestämmer hur många rader man ska hoppa ner vid varje nytt värde på col. Vi testar att använda SKIP, för att få en ännu tydligare gruppindelning:
SQL> BREAK ON deptno SKIP 1
SQL> SELECT deptno, ename FROM emp ORDER BY deptno;
DEPTNO ENAME
---------- ----------
10 CLARK
KING
MILLER
20 SMITH
ADAMS
FORD
SCOTT
JONES
30 ALLEN
DEPTNO ENAME
---------- ----------
30 BLAKE
MARTIN
JAMES
TURNER
WARD
14 rader.
|
NULL
Per default skriver Oracle inte ut någonting då en kolumn innehåller NULL. Ibland vill man veta om en kolumn innehåller en tom sträng eller NULL. För detta ändamål finns kommandot NULL:
När man kör detta kommando kommer text att skrivas då kolumnen innehåller NULL:
SQL> set WRAP off
SQL> set NULL Null
SQL> SELECT * FROM emp;
kapad (som begärt) före kolumn DEPTNO
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 800 Null
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300
7521 WARD SALESMAN 7698 1981-02-22 1250 500
7566 JONES MANAGER 7839 1981-04-02 2975 Null
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400
7698 BLAKE MANAGER 7839 1981-05-01 2850 Null
7782 CLARK MANAGER 7839 1981-06-09 2450 Null
7788 SCOTT ANALYST 7566 1987-04-19 3000 Null
7839 KING PRESIDENT Null 1981-11-17 5000 Null
7844 TURNER SALESMAN 7698 1981-09-08 1500 0
7876 ADAMS CLERK 7788 1987-05-23 1100 Null
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
7900 JAMES CLERK 7698 1981-12-03 950 Null
7902 FORD ANALYST 7566 1981-12-03 3000 Null
7934 MILLER CLERK 7782 1982-01-23 1300 Null
14 rader.
|
COLSEP
Med COLSEP kan man ändra det värde som skrivs ut mellan kolumnerna på varje rad. Detta kan vara bra om du vill använda datat för att läsa in det i någon annan databas:
Vi testar detta:
SQL> set WRAP off
SQL> set COLSEP ";"
SQL> SELECT * FROM emp;
kapad (som begärt) före kolumn DEPTNO
EMPNO;ENAME ;JOB ; MGR;HIREDATE ; SAL; COMM
----------;----------;---------;----------;----------;----------;----------
7369;SMITH ;CLERK ; 7902;1980-12-17; 800;
7499;ALLEN ;SALESMAN ; 7698;1981-02-20; 1600; 300
7521;WARD ;SALESMAN ; 7698;1981-02-22; 1250; 500
7566;JONES ;MANAGER ; 7839;1981-04-02; 2975;
7654;MARTIN ;SALESMAN ; 7698;1981-09-28; 1250; 1400
7698;BLAKE ;MANAGER ; 7839;1981-05-01; 2850;
7782;CLARK ;MANAGER ; 7839;1981-06-09; 2450;
7788;SCOTT ;ANALYST ; 7566;1987-04-19; 3000;
7839;KING ;PRESIDENT; ;1981-11-17; 5000;
7844;TURNER ;SALESMAN ; 7698;1981-09-08; 1500; 0
7876;ADAMS ;CLERK ; 7788;1987-05-23; 1100;
EMPNO;ENAME ;JOB ; MGR;HIREDATE ; SAL; COMM
----------;----------;---------;----------;----------;----------;----------
7900;JAMES ;CLERK ; 7698;1981-12-03; 950;
7902;FORD ;ANALYST ; 7566;1981-12-03; 3000;
7934;MILLER ;CLERK ; 7782;1982-01-23; 1300;
14 rader.
|
|
| |
|