Documente Academic
Documente Profesional
Documente Cultură
OBIECTIVE
Scopul lectiei
In aceasta lectie veti invata cum sa includeti comenzile SQL*Plus pentru a produce o
iesire SQL care sa se citeasca mai usor.
Puteti crea un fisier de comanda ce contine o clauza WHERE pentru a limita rindurile afisate.
Pentru a schimba conditia ori de cite ori fisierul de comanda este parcurs,utilizati variabile de
substitutie.Acestea pot inlocui valorile din clauza WHERE,un text si chiar o coloana sau o
denumire de tabel.
RAPOARTE INTERACTIVE
Exemplele date pina acum nu au fost interactive in nici un mod. Intr-o aplicatie
incheiata utilizatorul ar declansa raportul, care raport s-ar derula fara promptare
ulterioara.Domeniul datelor ar fi predeterminat de clauza WHERE fixata in fisierul
SQL*Plus.
Folosind SQL*Plus puteti crea rapoarte care sugereaza utilizatorului sa livreze
propriile valori pentru a limita domeniul de date produse.Pentru a crea rapoarte interactive
puteti fixa variabile de substitutie intr-un fisier de comanda sau intr-o singura declaratie
SQL.Prin variabila se poate intelege un recipient in care valorile sint stocate temporar.
VARIABILE DE SUBSTITUTIE
Variabile de substitutie
In SQL*Plus puteti folosi variabile de substitutie ampersand unic(&) pentru a stoca temporar
valorile.Puteti predefini variabilele intre intre SQL*Plus folosind comenzile ACCEPT sau
DEFINE. ACCEPT citeste o linie a utilizatorului si o stocheaza intr-o variabila. DEFINE
creeaza si aloca o valoare variabilei.
SQL>SELECT empno,ename,sal,deptno
2 FROM emp
3 WHERE empno=&employee_num;
Exemplu de mai sus creaza o declaratie SQL pentru a-i prezenta utilizatorului datele unui
salariat afisind numarul de cod,numele,salariul,numarul serviciului in care lucreaza salariatul .
! Prin ampersand unic utilizatorul este informat ori de cite ori se executa comanda,daca
variabila nu exista.
Transmiterea, catre afisaj, a textului unei unei comenzi, inainte si dupa ce SQL*Plus
inlocuieste variabilele de substitutie cu valorile alocate.
............
Pentru a confirma modificarile din declaratia SQL*Plus folositi aceasta comanda SET
VERIFY Cind SET VERIFY este activa,SQL*Plus este fortat sa afiseze textul unei comenzi
inainte si dupa ce inlocuieste variabilele de substitutie cu valorile alocate.In exemplu de mai
sus sint afisate atit valoarea veche cit si cea noua din rubrica EMPNO.
Intr-o clauza WHERE valorile caracterelor si datelor trebuie incadrate in ghilimele simple.
Aceiasi regula se aplica si in cazul variabilelor de substitutie.Pentru a evita introducerea
ghilimelelor in momentul derularii,se incadreaza variabila in ghilimele simple in cadrul
declaratiei SQL insasi. In exemplu de mai sus se prezinta un query pentru a reda numele
angajatului,numarul serviciului si salariul anual al tuturor salariatilor in baza denumirii
functiei introduse in prompt de utilizator.
Nu numai ca puteti folosi variabile de substitutie intr-o clauza WHERE a unei declaratii SQL,
dar puteti folosi substitutia pentru numele unei coloane,expresii,sau text.
EXEMPLU
Afisati numarul salariatului si orice alta coloana si conditie a salariatului .
Puteti utiliza variabila de substitutie cu ampersand dublu (&&) daca doriti sa reutilizati
valoarea variabilei fara a prompta utilizatorul de fiecare data. In exemplu de mai sus,
utilizatorului i se cere sa dea variabilei column_name valori numai o data . Valoarea
furnizata de utilizator deptno se foloseste atit pentru afisare cit si pentru ordonarea datelor .
SQL*Plus stocheaza valoarea furnizata folosind comanda DEFINE ; el o va utiliza din nou,ori
de cite ori veti face trimitere la denumirea variabilei.Dupa ce a fost instalata trebuie sa folositi
comanda UNDEFINE pentru a anula variabila.
Puteti defini variabilele in prealabil,utilizind una din cele doua comenzi SQL*Plus
-DEFINE :creaza o variabila a utilizatorului CHAR datatype
-ACCEPT :citeste imput-ul utilizatorului si il stocheaza intr-o variabila
Daca aveti nevoie sa folositi un spatiu mic cind folositi comanda DEFINE trebuie sa
incadrati spatiul in ghilimele simple.
COMANDA ACCEPT
In sintaxa :
variable este denumirea variabilei care stocheaza valoarea.Daca aceasta nu
exista SQL*Plus o creeaza .
NOTA:nu se ataseaza prefixul de inlocuire SQL*Plus ampersandul (&) cind se face referire la
parametrul de inlocuire in comanda ACCEPT.
SELECT *
FROM dept
WHERE dname=UPPER(‘&dept’)
/
30 SALES CHICAGO
INDRUMARI
Ambele comenzi ACCEPT si DEFINE vor crea o variabila,daca variabila nu exista; aceste
comenzi vor redefini automat o variabila,daca exista.
Cind se foloseste comanda DEFINE se folosesc ghilimele simple (‘ ‘) pentru a incadra
un segment ce contine un spatiu fix
Utilizati comanda ACCEPT pentru :
- a da un prompt adaptat cind se accepta input-ul utilizatorului, in caz contrar veti
vedea optiunea “Enter value for variable”;
- a defini in mod explicit variabila datatype NUMBER sau DATE;
- a ascunde input-ul utilizatorului din motive de securitate .
SQL> SELECT *
2 FROM dept
3 WHERE dname=UPPER (‘&deptname’)
Cum se utilizeaza comanda DEFINE
Puteti utiliza comanda DEFINE pentru a crea o variabila si apoi sa utilizati variabila la fel ca
si oricare alta variabila .Exemplu de mai sus creeaza o variabila DEPTNAME ce contine
denumirea serviciului SALES. Declaratia SQL utilizeaza apoi aceasta variabila pentru a afisa
numarul si locul unde se afla serviciul de desfaceri .
SQL>SHOW ECHO
echo ON
Puteti controla mediul in care lucreaza curent SQL*Plus utilizind comenzile SET.
In sintaxa :
sistem variable este o variabila care controleaza un aspect al mediului sesiunii
Puteti verifica ceea ce ati fixat utilizind comanda SHOW . In ilustratie aceasta comanda
controleaza daca ECHO a fost cuplat sau nu .Pentru a vedea toate valorile variabile ale
comenzii SET se utilizeaza comanda SHOW ALL.
Pentru mai multe informatii vezi : SQL*Plus User’s Guide and Reference.Release 8,
”Command Reference”.
ARRAYSIZE {20/n}
COLSEP {_ / text}
FEEDBACK {_6 / n / OFF /ON }
HEADING {OFF /ON }
LINESIZE {_80 / n }
LONG {_ 80 / n }
PAGESIZE { _24 /n }
PAUSE {_OFF /ON /text }
TERMOUT {OFF /_ON}
NOTA :Valoarea n reprezinta o valoare numerica .Valorile subliniate de mai sus indica valorile
implicite.Daca nu introduceti nici o valoare SQL*Plus aloca valori implicite (default).
Fisierul login.sql contine comenzile SET standard si alte comenzi SQL*Plus care sint
implementate in login.
Puteti modifica login.sql sa contina comenzi SET suplimentare .
Fisierul login.sql contine comenzile SET standard si alte comenzi SQL*Plus de care ati putea
avea nevoie la fiecare sesiune.Fisierul se citeste si comenzile sint implementate in login.Cind
parasiti (log out) sesiunea, toate setarile se pierd.
Aceste valori implementate prin login.sql pot fi schimbate in timpul sesiunii curente.
Modificarile efectuate sint curente numai pentru acea sesiune. Imediat ce o intrerupeti acele
valori sint pierdute. Adaugati modificari permanente la setarile din fisierul login.sql .
COMENZILE FORMATULUI SQL*Plus
COLUMN[column option]
TTITLE [text / OF / ON ]
BTITLE [text / OFF /ON ]
BREAK [ON report_element]
Indrumari
Toata comenzile formatului ramin valabile pin ala sfirsitul sesiunii SQL*Plus sau pina ce
se scrie altceva pe format ori se sterge.
Nu uitati sa resetati toate valorile SQL*Plus setate ca valori implicita (default) dupa
fiecare raport.
Nu exista nici o comanda pentru a seta variabilaSQL*Plus dupa valoarea implicita
(default);trebuie sa cunoasteti valoarea specifica sau sa executati log out sau log in din
nou .
Daca rubricii i se da un nume fals trebuie sa faceti trimitere la acest nume si nu la
denumirea initiala a rubricii.
COMANDA COLUMN
COLUMN ename
Pentru a reda sau sterge setarile comenzii COLUMN curente,folositi urmatoarele comenzi:
Comanda Descriere
COL[UMN] column Afiseaza setarile curente pentru o anumita
coloana precizata.
COL[UMN] Afiseaza setarile curente pentru toate
coloanele.
COL[UMN] column CLE[AR] Anuleaza setarile pentru o coloana precizata.
CLE[AR] COL[UMN] Anuleaza setarile pentru toate coloanele.
Daca aveti o comanda mai lunga puteti sa o continuati pe linia urmatoare incheind linia
curenta cu semnul (-).
SQL>BREAK ON report
Comanda BREAK
Utilizati comanda BREAK pentru a imparti rindurile si a suprima valorile duble. Pentru a va
asigura ca respectiva comanda BREAK functioneaza efectiv,ORDER BY coloanele pe care le
desfaceti.
SINTAXA
BREAK on column[ /alias / row ] [skip n /dup/pag] on...[on report]
unde: pag trece la o pagina noua cind valoarea de BREAK se schimba.
skip n sare n numarul liniei cind valoarea BREAK se schimba.
BREAK devine activa la :
-coloane
-rinduri
-pagina
-raport
duplicate afiseaza valorile duble
CLEAR BREAK
UTILIZAREA COMENZILOR TTITLE SI BTITLE
SQL>TTITLE‘Salary /Report’
SQL>BTITLE ‘Confidential’
Utilizati comanda TTITLE pentru a formata header-ul paginii si comanda BTITLE pentru
footers.Footers apare la baza paginii in concordanta cu valoarea PAGESIZE.
Sintaxa pentru BTITLE si TTITLE este identica.Se reda numai sintaxa pentru TTITLE.Puteti
utiliza bara verticala (I) pentru pentru a desparti textul de titlu pe mai multe rinduri.
Sintaxa :
text reprezinta titlul.Se introduc ghilimelele simple daca textul contine mai
multe cuvinte.
NOTA:In exemplu demai sus este o sintaxa prescurtata pentru TTITLE si BTITLE.Diverse
optiuni pentru TTITLE si BTITLE sint prezentate in alt curs SQL.
Puteti fie sa introduceti fiecare din comenzile SQL*Plus in promtulSQL,fie sa puneti toate
comenzile,inclusiv declaratia SELECT in fisierul de comanda (sau script).Un script tipic
consta din cel putin o declaratie SELECT si mai multe comenzi SQL*Plus.
Etape pentru creearea unui Script File
1. Se creeaza declaratia SQL SELECT in promtul SQL. Se asigura ca datele necesare
raportului sint exacte inainte de a salva declaratia in fisier si a aplica comenzile de
formatare.Verificati clauza ORDER BY sa fie inclusa,daca intentionati sa introduceti
pauzele.
2. Salvati declaratia SELECT in script file.
3. Editati script file pentru a introduce comenzile SQL*Plus.
4. Executati comenzile de formatare inainte de declaratia SELECT.Asigurati-va ca nu ati
introdus comenzile SQL*Plus in declaratia SELCT.
5. Verificati daca SELECT este urmata de un caracter de executare,fie punct si virgula(;),fie
slash(/).
6. Se adauga comenzile de stergere a formatului SQL*Plus dupa caracterul de executare
(derulare).
7. Se salveaza script file cu modificarile facute de dvs.
8. In SQL*Plus,se executa script file introducind comanda START filenam sau @ filenam.
Aceasta comanda este necesara pentru a citi si executa script file.
Indrumari
Puteti include rinduri goale intre comenzile SQL*Plus dintr-un script.
Puteti abrevia comenzile SQL*Plus.
Includeti comenzile de resetare la sfirsitul fisierului pentru a reface mediul original
SQL*Plus .
MODEL DE RAPORT
Confidential
EXEMPLU
Se creeaza un script file pentru a initia un raport care afiseaza functia,numele si salariul
fiecarui angajat al carui salariu este sub 3000$.Se adauga headerul pe centru pe doua rinduri
pentru titlul “Raport cu salariatii”si la baza centrat footerul “confidential.
Se redenumeste coloana JOB pentru a citi “Job category” impartita pe doua rinduri.Se
redenumeste coloana EMPLOYEE pentru a citi numele salariatilor.Se redenumeste coloana
pentru salar pentru a citi “Salary” si se formateaza ca 2500$
SET PAGESIZE 37
SET LINESIZE 60
SET FEEDBACK OFF
TTITLE ‘EmployeeIReport’
BTITLE ‘Confidential’
COLUMN job HEADING ‘JobICategory’ Format A15
COLUMN ename HEADIHG ‘Employee’ Format A15
COLUMN sal HEADING ‘Salary’ Format $99,999.99
REM ** Insert SELECT statement
SELECT job,ename,sal
FROM emp
WHERE sal<3000
ORDER BY job,ename
REZUMAT
Rezumat
Aceasta lucrare va da ocazia sa creati fisiere care pot fi executate interactiv folosind variabile
de substitutie pentru a crea criteriile de selectare a timpului de lucru.
LUCRARE PRACTICA
3. Scrieti un Script file pentru a afisa numele,functia si data angajarii pentru toti salariatii
care au inceput sa lucreze intr-o anumita perioada .Se concateneaza numele si functia
impreuna,separate de un spatiu si virgula si etichetati coloana “Employees”.Promptati
utilizatorul pentru doua intervale folosind comanda ACCEPT. Se utilizeaza formatul
MM/DD/YY. Se salveaza script file ca p8q3.sql .