1. Oracle SQL*PLUS
SQL*PLUS permette di:
eseguire comandi SQL e blocchi PL/SQL
Creare report e pagine web come risultato
Vedere la struttura delle tabelle
Eseguire azioni di amministrazione
2. Le basi
SQLPLUS è il comando da eseguire per entrare nel programma. Viene chiesto l’inserimento
dell’Username (SCOTT), della password(TIGER) del database (orcl). Dopo la connessione si
presenta il prompt
SQL> Per uscire: SQL>EXIT
Per ottenere l’Help su un particolare comandi di SQL*PLUS
SQL>HELP <COMANDO>
Dal prompt è possibile inserire qualsiasi comando SQL, anche su più righe concludendo con il
punto e virgola
SQL>SELECT EMPNO, ENAME, JOB, SAL
2 FROM EMP WHERE SAL < 1500;
(Si noti il ‘2’ sulla seconda linea)
I comandi vengono posti in un buffer. E’ possibile rieseguire l’ultimo
comando in due modi:
RUN
/
Per ottenere la paginazione è opportuno settare
set Pause ‘Ancora..’
set PAUSE ON
Ovviamente come vedremo si dovrà settare la lunghezza della pagina
3. PL/SQL
SQL*PLUS permette di eseguire blocchi PL/SQL:
SQL> DECLARE
2 x NUMBER := 100;
3 BEGIN
4 FOR i IN 1..10 LOOP
5 IF MOD (i, 2) = 0 THEN --i is even
6 INSERT INTO temp VALUES (i, x, ’i is
even’);
7 ELSE
8 INSERT INTO temp VALUES (i, x, ’i is
odd’);
9 END IF;
10 x := x + 100;
11 END LOOP;
12 END;
13 .
4. Informazioni sul database
Per ottenere informazioni su una tabella si può usare il comando:
SQL> DESCRIBE DEPT
Il comando DESCRIBE permette anche di avere informazioni su una funzione PL/SQL
5. Comandi di Editing
LIST : permette di vedere le righe nel buffer
LIST n : permette di vedere una riga del buffer, e di posizionarsi per
le operazioni seguenti
CHANGE /DPTNO/DEPTNO : effettua una sostituzione nel buffer
INPUT : aggiunge una riga in coda
APPEND : aggiunge del testo in coda
DEL : elimina la riga listata (DEL n : elimina la riga n)
EDIT : apre l’editor standard configurabile con DEFINE _EDITOR = EDT
(EDIT FILE: edita un particolare file)
SAVE file : salva il buffer in un file
GET file : carica un file nel buffer
START file: esegue un file di comandi (anche @FILE)
CLEAR BUFFER : svuota il buffer
SPOOL file : salva i risultati su file
SPOOL OUT : invia a una stampante
6. Interattività
DEFINE EMPLOYEE = SMITH (Definisce una variabile)
CLEAR SCREEN (Pulisce lo schermo)
PAUSE Press RETURN to continue. (Aspetta che l’utente prema
enter)
BREAK ON &SORTCOL (Chiede l’inserimento di una
variabile)
L’uso di ‘&’ crea di per se una variabile chiesta interattivamente
all’utente:
SQL> SELECT &SORTCOL, SAL
2 FROM &MYTABLE
3 ORDER BY &SORTCOL;
L’uso della doppia ‘&&’ permette di evitare il prompt per le
variabili gia definite in precedenza.
Se un file di comandi contenente delle variabili sostituibili, è
possibile passare i parametri da riga di comando eseguendo il
comando START
PROMPT Enter a title up to 30 characters long. (Produce un
output per l’utente)
7. Uso avanzato
SQL> CLEAR BUFFER
buffer cleared
SQL> INPUT
1 PROMPT Enter a valid employee number
2 PROMPT For example: 7369, 7499, 7521
3 ACCEPT ENUMBER NUMBER PROMPT ’Emp. no.: ’
4 SELECT ENAME, MGR, JOB, SAL
5 FROM EMP
6 WHERE EMPNO = &ENUMBER
7
SQL> SAVE PROMPT2
Created file PROMPT2
(Si noti la riga 3 che permette la lettura una variabile di
tipo NUMBER)
8. Bind Variable
Per visualizzare delle variabili PL/SQL in SQL*PLUS è necessario
definire delle variabili in questo modo:
SQL> VARIABLE id NUMBER
Se poi la variabile assume un valore in un blocco PL/SQL
SQL> BEGIN
2 :id := 1;
3 END;
4 /
Sarà possibile stamparla in SQL*PLUS
SQL> print id
9. Formattazione: Colonne
COLUMN DEPTNO HEADING Department (Imposta il titolo
colonna)
COLUMN ENAME HEADING ’Employee|Name’ (titolo su due
righe)
COLUMN SAL FORMAT $99,990 (Formato numerico)
COLUMN ENAME FORMAT A4 (Formato testo 4
caratteri)
(ulteriore opzione TRUCATED or WRAPPED)
COLUMN COMM LIKE SAL HEADING Bonus (copia di
formato)
COLUMN column_name CLEAR (resetta il
formato di una col)
CLEAR COLUMNS (resetta il formato di
tutte)
10. Formattazione: gruppi
E’ possibile sopprimere i dupplicati in questo modo:
BREAK ON DEPTNO
SELECT DEPTNO, ENAME, SAL FROM EMP ORDER BY DEPTNO;
Si ottiene:
DEPTNO ENAME SAL
---------- ----------- ---------
10 CLARK 2450
MILLER 1300
20 SMITH 800
ADAMS 1100
30 ALLEN 1600
JAMES 950
TURNER1500
WARD 1250
MARTIN1250
BREAK ON DEPTNO SKIP 1 (inserisce una riga vuota in ogni gruppo)
BREAK ON DEPTNO SKIP PAGE ON JOB SKIP 1 (salta una pagina ogni v
olta che cambia DEPTNO e una riga ogni volta che cambia JOB)
(provare questo comando per vedere effettivamente il cambio di
pagina)
TTITLE COL 35 FORMAT 9 ’Page:’ SQL.PNO
11. Totali parziali
I raggruppamenti fatti con BREAK possono permettere dei
raggruppamenti:
Ad esempio:
break on DEPTNO skip 0 page nodup on JOB skip 1
nodup
COMPUTE SUM OF SAL ON DEPTNO
Le funzioni disponibili sono SUM, MINIMUM, MAXIMUM,
AVG, STD, VARIANCE, COUNT, NUMBER
12. Titoli
Top Title
TTITLE CENTER ’ACME WIDGET SALES DEPARTMENT PERSONNEL REPORT’
Bottom Title
BTITLE CENTER ’COMPANY CONFIDENTIAL’
Uso Avanzato
SQL> TTITLE CENTER ’A C M E W I D G E T’ SKIP 1 -
> CENTER ================ SKIP 1 LEFT ’PERSONNEL REPORT’ -
> RIGHT ’SALES DEPARTMENT’ SKIP 2
SQL> SET LINESIZE 60
SQL> /
13. Dimensioni della pagina
SQL> SET PAGESIZE 66 (numero di linee per pagina)
SQL> SET NEWPAGE 0 (pulisce lo schermo a ogni cambio
pagina)
SQL> SET LINESIZE 32 (caratteri per linea)
14. Impostazioni iniziali
E’ possibile creare un file login.sql contenente le
impsostazioni iniziali di sql*plus. Ad esempio:
SET ECHO OFF
PROMPT Setting SERVEROUTPUT ON...
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132
DEFINE _EDITOR = /usr/bin/vi