Oracle 2 (sqlplus)

14
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

Transcript of Oracle 2 (sqlplus)

Page 1: Oracle 2 (sqlplus)

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

Page 2: Oracle 2 (sqlplus)

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 promptSQL> Per uscire: SQL>EXIT

Per ottenere l’Help su un particolare comandi di SQL*PLUSSQL>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 settareset Pause ‘Ancora..’set PAUSE ON

Ovviamente come vedremo si dovrà settare la lunghezza della pagina

Page 3: Oracle 2 (sqlplus)

PL/SQLSQL*PLUS permette di eseguire blocchi PL/SQL:SQL> DECLARE2 x NUMBER := 100;3 BEGIN4 FOR i IN 1..10 LOOP5 IF MOD (i, 2) = 0 THEN --i is even6 INSERT INTO temp VALUES (i, x, ’i is even’);7 ELSE8 INSERT INTO temp VALUES (i, x, ’i is odd’);9 END IF;10 x := x + 100;11 END LOOP;12 END;13 .SQL> /

Page 4: Oracle 2 (sqlplus)

Informazioni sul databasePer ottenere informazioni su una tabella si può usare il comando:SQL> DESCRIBE DEPTIl comando DESCRIBE permette anche di avere informazioni su una funzione PL/SQL

Page 5: Oracle 2 (sqlplus)

Comandi di EditingLIST : permette di vedere le righe nel bufferLIST n : permette di vedere una riga del buffer, e di posizionarsi per

le operazioni seguentiCHANGE /DPTNO/DEPTNO : effettua una sostituzione nel bufferINPUT : aggiunge una riga in codaAPPEND : aggiunge del testo in codaDEL : 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 bufferSTART file: esegue un file di comandi (anche @FILE)CLEAR BUFFER : svuota il bufferSPOOL file : salva i risultati su fileSPOOL OUT : invia a una stampante

Page 6: Oracle 2 (sqlplus)

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)ACCEPT MYTITLE PROMPT ’Title: ’ (legge MYTITLE con il prompt dato)

Page 7: Oracle 2 (sqlplus)

Uso avanzato

SQL> CLEAR BUFFERbuffer clearedSQL> INPUT1 PROMPT Enter a valid employee number2 PROMPT For example: 7369, 7499, 75213 ACCEPT ENUMBER NUMBER PROMPT ’Emp. no.: ’4 SELECT ENAME, MGR, JOB, SAL5 FROM EMP6 WHERE EMPNO = &ENUMBER7SQL> SAVE PROMPT2Created file PROMPT2 (Si noti la riga 3 che permette la lettura una variabile di tipo NUMBER)

Page 8: Oracle 2 (sqlplus)

Bind Variable Per visualizzare delle variabili PL/SQL in SQL*PLUS è necessario definire delle variabili in questo modo:SQL> VARIABLE id NUMBERSe poi la variabile assume un valore in un blocco PL/SQLSQL> BEGIN 2 :id := 1; 3 END; 4 /Sarà possibile stamparla in SQL*PLUS

SQL> print id

Page 9: Oracle 2 (sqlplus)

Formattazione: ColonneCOLUMN 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)

Page 10: Oracle 2 (sqlplus)

Formattazione: gruppiE’ possibile sopprimere i dupplicati in questo modo:BREAK ON DEPTNOSELECT DEPTNO, ENAME, SAL FROM EMP ORDER BY DEPTNO;Si ottiene:DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450

MILLER 130020 SMITH 800

ADAMS 110030 ALLEN 1600

JAMES 950TURNER1500WARD 1250MARTIN1250

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

Page 11: Oracle 2 (sqlplus)

Totali parzialiI raggruppamenti fatti con BREAK possono permettere dei raggruppamenti:Ad esempio:break on DEPTNO skip 0 page nodup on JOB skip 1 nodupCOMPUTE SUM OF SAL ON DEPTNO

Le funzioni disponibili sono SUM, MINIMUM, MAXIMUM, AVG, STD, VARIANCE, COUNT, NUMBER

Page 12: Oracle 2 (sqlplus)

TitoliTop TitleTTITLE CENTER ’ACME WIDGET SALES DEPARTMENT PERSONNEL REPORT’

Bottom TitleBTITLE CENTER ’COMPANY CONFIDENTIAL’

Uso AvanzatoSQL> TTITLE CENTER ’A C M E W I D G E T’ SKIP 1 -> CENTER ================ SKIP 1 LEFT ’PERSONNEL REPORT’ -> RIGHT ’SALES DEPARTMENT’ SKIP 2SQL> SET LINESIZE 60SQL> /

Page 13: Oracle 2 (sqlplus)

Dimensioni della paginaSQL> 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)

Page 14: Oracle 2 (sqlplus)

Impostazioni inizialiE’ possibile creare un file login.sql contenente le

impsostazioni iniziali di sql*plus. Ad esempio:SET ECHO OFFPROMPT Setting SERVEROUTPUT ON...SET SERVEROUTPUT ON SIZE 1000000SET PAGESIZE 999SET LINESIZE 132DEFINE _EDITOR = /usr/bin/vi