This is an old revision of the document!


Laborator 11 - Formatarea datelor de ieșire în SQL*Plus

Obiective

  • Formatarea datelor de ieșire
  • Comanda SET
  • Comanda COLUMN
  • Comenzile TTITLE și BTITLE
  • Comenzile BREAK și COMPUTE

Comenzile SQL*Plus

Comenzile SQL*Plus sunt folosite pentru:

  • Editarea, memorarea și executarea comenzilor SQL
  • Efectuarea de calcule, formatarea datelor de ieșire și printarea listelor
  • Listarea structurii obiectelor din baza de date
  • Accesul și transferul datelor între baze de date
  • Interceptarea și interpretarea mesajelor de eroare

Comenzi SQL*Plus

  • @ – execută un fișier de comenzi indirecte
  • / – execută comanda curentă din buffer
  • ACC[EPT] variable [NUM[BER]|CHAR] [PROMPT text|NOPR[OMPT]] [HIDE] – citește o dată de intrare și o stochează într-o variabilă
  • A[PPEND] text – adaugă un text la sfârșitul liniei curente din buffer
  • BRE[AK] [ON report_element [action[action]]].. – specifică modul de formatare într-un raport prin suprimarea afișării înregistrărilor duplicate pe coloane, salt de linie, efectuarea de calcule cu comanda COMPUTE
  • BTI[TLE] [printspec [ text | variable] … ] | OFF | ON – plaseaza un text la sfarsitul raportului
  • C[HANGE] sepchar old [sepchar [new]] – schimbă un text în linia de comanda;
  • CL[EAR] option – resetează setările făcute cu alte comenzi, cum ar fi BREAKS, BUFFER, COLUMNS, COMPUTERS, SCREEN;
  • COL[UMN] [(column | expr) [option …]] – specifică atribute de afișare pentru o coloană, cum ar fi specificarea antetului și formatul de afișare
  • COMP[UTE] [function OF (expr|column|alias) … ON (expr | column | alias | REPORT | ROW) – face anumite calcule pe coloane aplicând funcția function
  • CONN[ECT] username/password@database_specification – face conexiunea la o altă bază de date (schemă)
  • COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE}  destination_table[(column, column, column, …)] USING query – copiaza o tabela dintr-o bază de date (schemă) în altă bază de date (schemă) conform unui query specificat, unde parametrul database are următoarea formă: username [/password]@database_specification
  • DEF[INE] [variable]|[variable=text] – definește o variabilă a userului
  • DEL – șterge linia curenta din buffer
  • DESC[RIBE] [user.]object[@database_link_name] – afișează structura unei tabele, view sau synonym
  • DISCONNECT – deconectează userul curent dar nu iese din SQL*Plus
  • ED[IT] [file_path_file_name[.ext]] – invoca un editor pentru comanda curentă din buffer
  • EXIT|QUIT – executa commit la ultimele tranzactii si iese din SQL Plus
  • GET file_path_file_name[.ext][LIST|NOTLIST] – încarcă un fișier de comenzi indirecte în buffer
  • HELP [topic] – accesează documentația din SQL*Plus
  • HO[ST] [command] – revenire parțială în sistemul de operare fără a părăsi SQL*Plus
  • I[NPUT] [text] – adaugă noi linii la comanda curentă din buffer
  • L[IST] [n m] [n LAST] [* LAST][LAST] – listează liniile comenzii din buffer începând cu linia curentă (*) sau de la linia n la m (fără parametri listează ultima comandă din buffer)
  • PAU[SE] [text] – oprește afișarea pe ecran, afișează text și așteaptă RETURN
  • PROMPT [text] – afișează un mesaj pe ecran
  • R[UN] – afișează și execută ultima comandă din buffer
  • SAV[E] file_path_file_name[.ext] [CREATE|REPLACE|APPEND] – salvează comanda din buffer într-un fișier
  • SET system_variable value – setează parametrii specifici sesiunii curente
  • SHO[W] option – afișează valorile variabilelor de sistem, unde option poate fi: ALL, BTITLE, NO, PNO, RELEASE, SPOOL, SQLCODE, TTITLE, USER
  • SPO[OL] file_path_file_name[.ext]|OFF|ON – redirectează rezultatele unei interogari spre un fisier
  • STA[RT] file_path_file_name[.ext][arg1,arg2,…] – execută un fișier de comenzi indirecte
  • TTI[TLE] [printspec [text|variable] …]|[OFF|ON] – plasează un text la începutul raportului
  • UNDEF[INE] variable – resetează variabile definite în sesiunea curentă

Comanda SET

  • Este folosită pentru setarea și activarea/dezactivarea anumitor parametri specifici sesiunii curente
  • Acești parametri au valori implicite la deschiderea unei sesiuni în SQL*Plus, dar sunt situații când unii trebuie modificați conform cerințelor utilizatorului și la terminarea sesiunii revin la valorile implicite.

Parametrii comenzii SET

Nume parametru Descriere parametru
ARRAY[SIZE] n specifică numărul maxim de linii din buffer rezultate în urma unei interogări, iar n poate fi maxim 5000, valoarea implicită n=20
DEF[INE] {'&'|c|OFF|ON} setează caracterul care prefixează o variabilă de substituție (valoare implicită &) iar ON/OFF este folosit pentru a schimba prefixul în comenzile din buffer
ECHO {OFF|ON} controlează cum sunt afișate comenzile executate dintr-un fișier de comenzi (OFF – valoarea implicită – suprimă acest lucru)
FEED[BACK] {6|n|OFF|ON} afișează numărul de înregistrări returnate de un query când sunt returnate cel puțin n înregistrări, valoarea implicită este 6
HEA[DING] {OFF|ON} controlează dacă sunt afișate aliasurile de coloane, valoarea implicită ON
LIN[ESIZE] n setează numărul de caractere care vor fi afișate pe o linie și de asemenea controlează centrarea si aliniamentul din dreapta a textului. Valoarea maximă pentru n este 500, valoarea implicită este 80
NEWP[AGE] n setează numărul liniilor goale ce vor fi tipărite între pagini (titlul de jos de la fiecare pagina și titlul de sus al paginii urmatoare)
NUMF[ORMAT] format setează formatul implicit pentru afisarea valorilor numerice
NUM[WIDTH] n setează lungimea implicită pentru afișarea valorilor numerice, valoarea implicită este 10
PAGES[IZE] n setează numărul liniilor pe o pagina, valoarea implicită este 24
PAU[SE] {OFF|ON|text} permite oprirea afișării pe ecran în timpul unei interogări, valoarea implicită este OFF
SHOW[MODE] {OFF|ON} permite afișarea variabilelor de sistem când sunt schimbate cu comanda SET, valoarea implicită este OFF
SPA[CE] n setează numărul de spații dintre coloane in timpul afisarii (valoarea implicită este 1, valoarea maxima pentru n este 10)
SQLCASE {MIXED|LOWER|UPPER} permite convertirea comenzilor SQL înainte de execuție. LOWER/UPPER convertesc comenzile iar MIXED (valoarea implicită) va lăsa textul nemodificat

Ex. 1 Să se seteze pagina de afișare la 120 caractere pe linie, 24 de linii pe pagină, un spațiu de 2 caractere între coloanele de afișare, salt de 5 linii între pagini, afișare să se facă fără antetul de coloană și fără a specifica numărul de înregistrări returnate de interogare.

Comanda COLUMN

  • Această comandă este folosită pentru definirea și formatarea coloanelor de ieșire.

Parametrii comenzii COLUMN

Nume parametru Descriere parametru
ALI[AS] alias inserează un alias
CLE[AR] resetează opțiunile anterioare
FOLD_A[FTER] inserează CR după antet și după fiecare rând
FOLD_B[EFORE] inserează CR înainte de antet și înaintea fiecarui rând
FOR[MAT] format specifică formatul de afisare An pentru coloane alfanumerice sau unul din formatele numerice
HEA[DING] text definește antetul coloanei
JUS[TIFY] L[EFT]|C[ENTER]|R[IGHT] specifică alinierea antetului (implicit dreapta pentru coloane numerice și stânga pentru celelalte tipuri)
LIKE {expr/alias} copiază setările altei coloane definite anterior
NEWL[INE] salt la linie noua
NEW_V[ALUE] variable specifică o variabilă care va stoca valoarea coloanei
NOPRI[NT] |PRI[NT] specifică dacă coloana va fi afisata
NULL {number|text} specifică ce număr sau text va fi afișat pentru o valoare nulă
ON|OFF controlează starea setărilor pentru o coloană
WRA[PPED]|[WOR[D_WRAPPED]|TRU[NCATED] specifică cum va fi afișat un șir prea lung pentru o coloana

Ex. 2 Să se listeze id_dep, functie, id_ang, salariu, comision și venit lunar pentru anajații din departamentul 30. Formatați coloanele.

Comenzile TITLE si BTITLE

  • Comanda TTITLE se folosește pentru formatarea titlui de început al unui raport.
  • Comanda BTITLE se folosește pentru formatarea titlui de sfârșit al unui raport.

Parametrii comenzilor TITLE si BTITLE

Nume parametru Descriere parametru
COL n se poziționează pe a n-a linie (dacă poziția a fost trecută, se întoarce pe poziția specificată)
SKIP n  se execută salt peste n linii (dacă n=0, se poziționează la începutul liniei curente)
TAB n  se execută salt peste n coloane (dacă n este negativ, se execută salt înapoi)
LEFT  se poziționează articolul care urmează acestei opțiuni în partea stângă a liniei. Dacă nu mai există nicio opțiune de aliniere în comandă, toate articolele vor fi aliniate în ordinea apariției în partea stângă, altfel se aliniază numai cele care apar pana la urmatoarea opțiune
CENTER în acest caz, poziționarea se face central și se ia în calcul lungimea liniei setată cu LINESIZE
RIGHT similar cu opțiunea de mai sus, dar poziționarea se face la dreapta
BOLD se specifică ca afișarea să se facă folosind caractere îngroșate
FORMAT char se specifică formatul de afișare pentru caractere numerice sau alfanumerice
UNDERLINE se specifică ca afișarea să se facă folosind caractere subliniate

Ex. 3 Să se creeze un raport care afișează id_ang, nume, functie, data_ang și salariu pentru angajații din departamentul 20.

Rapoarte

Un raport poate fi fragmentat după:

  • Coloană
  • Expresie
  • Rând
  • Raport

Pe un raport se pot executa următoarele acțiuni în urma formatării:

  • Salt de n rânduri
  • Salt de pagină
  • Duplicarea sau neduplicarea valorilor pe o coloană

Comenzile BREAK si COMPUTE

  • Comanda BREAK este folosită pentru fragmentarea unui raport în mai multe segmente
  • Comanda COMPUTE execută anumite calcule pe segmentele respective
  • Comanda BREAK (care face o fragmentare) are următoarea sintaxă:

BRE[AK] [ON report_element [action [action]]] …

unde:

  • report_element are sintaxa: {column|expr|ROW|REPORT}
  • action are sintaxa: [SKI[P] n|[SKI[P]] PAGE] [NODUP[LICATES]|DUP[LICATES]]

Calculele care se pot face cu comanda COMPUTE sunt:

Operatie Descriere operatie
AVG calcul medie (pentru date de tip number)
COU[NT] numără valorile nenule (pentru orice tip de date)
MAX[IMUM] valoare maximă (pentru date de tip number și char)
MIN[IMUM] valoare minimă (pentru date de tip number și char)
NUM[BER] numără rânduri (pentru orice tip de data)
STD calcul deviație standard pentru valori nenule (pentru date de tip number)
SUM calcul suma pentru valori nenule (pentru date de tip number)
VAR[IANCE] calcul variație (pentru date de tip number)

Ex. 4 Sa se faca un raport care să conțină numele departamentului, numele angajaților, funcția și salariul. Să se calculeze salariu total pe fiecare departament și salariul total pe firma.

Ex. 5 Să se facă un stat de salarii. Să se calculeze impozitul astfel:

  • Dacă venitul <= 2000, impozitul este 10% din venit
  • Dacă venitul > 2000, impozitul este 20% din venit
bd/laboratoare/11.1582053411.txt.gz · Last modified: 2020/02/18 21:16 by iulia.radulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0