Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


SQL*PLUS

sql



+ Font mai mare | - Font mai mic



SQL*PLUS

SQL este un limbaj de comenzi pentru comunicare cu server-ul Oracle.



SQL*Plus este un utilitar Oracle care recunoaste comenzile SQL si trimite aceste comenzi server-ului Oracle pentru executie.

SQL*Plus à instrument puternic care este utilizat in dezvoltarea aplicatiilor pentru baza de date Oracle.

SQL*Plus à instrument flexibil care poate fi executat pe toate platformele pe care se instaleaza produsul Oracle.

Ce operatii se pot realiza din consola SQL*Plus

editarea, salvarea, incarcarea si executia de comenzi SQL sau blocuri PL/SQL;

formatarea, salvarea, tiparirea si realizarea anumitor calcule asupra rezultatelor unei interogari sub forma de rapoarte;

listarea definitiilor tabelelor;

accesarea si transferarea datelor intre baze de date;

realizarea unor functii de administrare a BD: administrarea utilizatorilor, administrarea spatiilor tabel, operatii de arhivare si recuperare etc.

Deosebiri esentiale intre comenzile SQL si comenzile SQL*Plus

Marcam dintre aceste deosebiri cateva, care sunt semnificative. Comenzile SQL*Plus:

nu cer caracter de terminare;

cer un caracter de continuare daca comanda este mai mare decat o linie;

nu sunt depuse in buffer-ul SQL;

nu permit prelucrarea datelor din baza de date;

foloseste comenzi pentru formatarea datelor (SQL foloseste functii);

cuvintele cheie pot fi prescurtate.

Conexiune la SQL*Plus

Dupa ce utilizatorul se conecteaza la SQL*Plus, sistemul afiseaza un prompt (SQL>) si asteapta comenzile utilizatorului. Utilizatorul poate da:

comenzi SQL pentru accesarea bazei de date;

blocuri PL/SQL pentru accesarea bazei de date;

comenzi SQL*Plus.

Activarea interfetei SQL*Plus

Din WINDOWS:

Se selecteaza: START > PROGRAMS > ORACLE > APPLICATION DEVELOPMENT > SQL*Plus

Se da username, password si numele bazei.

Prin linia de comanda:

SQLPLUS [nume_utiliz/parola][@nume_baza_de_date] [@nume_fisier]

Inchiderea sesiunii de lucru SQL*Plus si preluarea controlului sistemului de operare al calculatorului gazda se realizeaza cu QUIT sau EXIT.

Conectarea la o alta baza de date decat cea deschisa initial, in timpul unei sesiuni de lucru SQL*Plus:

CONNECT [nume_utilizator[/parola]][@nume_baza_de_date]

Conexiunea ramane valida pana cand apare una din urmatoarele situatii:

se paraseste SQL*Plus;

se da comanda de deconectare DISCONNECT (comanda nu inchide sesiunea de lucru SQL*Plus);

se face conectarea la o alta baza de date.

Crearea unei legaturi intre BD locala si o BD aflata la distanta:

CREATE [PUBLIC] DATABASE LINK nume_legatura

CONNECT TO nume_utilizator

IDENTIFIED BY parola

USING baza_de_date_distanta

Dupa ce legatura a fost creata, pot fi facute interogari asupra tabelelor corespunzatoare BD distante prin specificarea numelui legaturii in clauza FROM din cerere. Daca se specifica optiunea PUBLIC, legatura este disponibila tuturor utilizatorilor cu exceptia celor care si-au definit o legatura privata cu acelasi nume.

Suprimarea unei legaturi intre doua BD, una locala si una la distanta:

DROP [PUBLIC] DATABASE LINK nume_legatura.

Cateva dintre cele mai importante comenzi disponibile in SQL*Plus :

ACCEPT - citeste o variabila de intrare de la utilizator;

DEFINE - declara o variabila (DEF);

DESCRIBE - listeaza atributele tabelelor sau ale altor obiecte (DESC);

EDIT - invoca editorul, salveaza continutul buffer-ului in fisierul afiedt.buf;

EXIT sau QUIT - deconecteaza utilizatorul si incheie sesiunea SQL*Plus;

GET - cauta un fisier SQL si il depune in buffer-ul SQL;

HOST - executa o comanda a sistemului de operare (!);

LIST - afiseaza ultima comanda executata din buffer-ul SQL (L);

PROMPT - afiseaza un text pe ecran;

RUN - listeaza si executa comanda salvata in buffer-ul SQL (/);

SAVE - salveaza comanda din buffer-ul SQL intr-un fisier script;

SET - modifica variabilele de mediu specifice SQL*Plus;

SHOW - afiseaza setarile variabilelor de mediu SQL*Plus;

SPOOL - copiaza iesirea unei comenzi intr-un fisier;

START - executa un script SQL (@).

Salvarea comenzilor

Comanda SQL, care este introdusa interactiv prin interfata SQL*Plus, este memorata intr-un buffer SQL. Ea poate fi modificata sau executata de mai multe ori, atata timp cat utilizatorul nu a introdus o noua comanda sau nu a sters explicit buffer-ul SQL (CLEAR BUFFER). Cererea noua va sterge vechea cerere din buffer.

Utilizatorul poate salva una sau mai multe comenzi intr-un fisier, ce ulterior poate fi incarcat, modificat sau executat. Extensia implicita a fisierului: .sql.

SAVE nume_fisier [CREATE|REPLACE|APPEND]

BUFFER

 


comenzi SQL comenzi SQL


comenzi SQL*Plus rezultatul cererii


RAPORT

(formatat)


SAVE alfa

EDIT alfa

@alfa

optiunea CREATE arata ca se creeaza un nou fisier;

optiunea REPLACE permite inlocuirea (overwrite) unui fisier existent;

optiunea APPEND adauga continutul buffer-ului in continuarea unui fisier.

Pentru incarcarea si executarea unui fisier de comenzi poate fi utilizata una din urmatoarele variante:

comanda START;

comanda ∂;

comenzile GET si RUN;

comenzile GET si

Pentru introducerea de comentarii printre comenzile care se gasesc intr-un fisier exista mai multe posibilitati:

utilizarea caracterelor "--" urmate de textul comentariului;

utilizarea delimitatorilor "/*" si "*/" pentru a marca inceputul si sfarsitul unui comentariu.

Pentru a obtine informatii referitoare la structura tabelelor, vizualizarilor sau sinonimelor, a procedurilor, functiilor sau pachetelor fara a fi necesara consultarea cataloagelor de sistem, se utilizeaza comanda:

DESCRIBE [nume_schema.]nume_obiect

Editarea comenzilor

Editorul integrat SQL *Plus (mini-editor mod linie) se incarca prin:

EDIT [nume_fisier[.extensie]]

Daca se doreste lansarea in executie a unui alt editor, se modifica variabila EDITOR cu ajutorul comenzii DEFINE. De exemplu:

DEFINE _EDITOR = vi

SQL*Plus pastreaza in memorie ultima comanda executata. Comenzile SQL*Plus nu sunt depuse in buffer-ul SQL. Ele se dau secvential, cate una la un moment dat. Daca comanda este prea lunga, ea va fi continuata pe linia urmatoare tastand caracterul "-" la sfarsitul liniei, inainte de a tasta RETURN.

Pentru editarea comenzilor SQL si a blocurilor PL/SQL se pot folosi:

A[PPEND] text - adauga textul specificat la sfarsitul liniei curente din buffer-ul SQL;



C[HANGE] separator old [separator [new [separator]]] - schimba textul old cu textul new (ca separator se poate folosi orice caracter care nu este alfanumeric);

DEL - sterge una sau mai multe linii din buffer-ul SQL (caracterul "*" indica linia curenta); DEL fara nici o clauza are ca efect stergerea liniei curente;

CL[EAR] BUFF[ER] - sterge toate liniile din buffer-ul SQL;

I[NPUT] [text] adauga una sau mai multe linii de text dupa linia curenta din buffer;

n text - inlocuieste linia n prin text;

L[IST] - listeaza una sau mai multe linii din buffer (caracterul "*" indica linia curenta); LIST fara nici o clauza listeaza toate liniile din buffer.

Comenzi interactive

SQL*Plus dispune de comenzi ce permit comunicarea directa cu utilizatorul:

comanda PAUSE permite afisarea unei linii vide sau unui text suspendand temporar actiunea si asteptand un RETURN de la utilizator;

comanda PROMPT trimite o linie goala sau un mesaj pe ecran;

comanda ACCEPT permite citirea unei linii de pe ecran si atribuirea valorii sale unei variabile (utilizator) specificate (variabila poate sa fie deja definita prin comanda DEFINE).

ACCEPT variabila [NUMBER | CHAR | DATE]

[FORMAT format] [PROMPT text | NOPROMPT] [HIDE]

Observatii:

tipul implicit al variabilei este CHAR;

textul de la optiunea PROMPT este tiparit inainte ca utilizatorul sa dea valoarea efectiva;

optiunea HIDE face ca valoarea data de utilizator sa fie mascata (de exemplu, o parola);

optiunea FORMAT indica modul de formatare;

variabila de substitutie, daca este prezenta, nu trebuie prefixata de simbolul "&".

Exemplu

ACCEPT alfa PROMPT 'Numarul de exemplare:'

ACCEPT beta PROMPT 'Numele autorului:'

SELECT *

FROM carte

WHERE nrex = &alfa

AND autor = '&beta';

Variabilele de substitutie (&nume)

Aceste variabile sunt utilizate pentru stocarea temporara a unor valori. Variabilele pot sa apara in comenzi SQL sau SQL*Plus. Interfata cere utilizatorului sa dea valori de fiecare data cand intalneste o variabila nedefinita. Daca variabila este precedata de simbolurile "&&", doar la prima apelare se va solicita o valoare.

Exemplu

SELECT nume, &&salariu

FROM salariat

ORDER BY &salariu;

Pentru variabilele de tip caracter sau de tip data calendaristica este obligatorie folosirea ghilimelelor. Variabilele de substitutie pot sa apara in conditia WHERE, in clauza ORDER BY, in expresia unei coloane, in numele unui tabel, in locul unei intregi comenzi SELECT.

Exemplu

SELECT &coloana

FROM  &tabel

WHERE &conditie

ORDER BY &ordine;

Comanda SET VER[IFY] permite listarea (sau nu) textului unei comenzi SQL sau PL/SQL, inainte si dupa ce SQL*Plus inlocuieste variabilele de substitutie cu valori efective.

SQL*Plus permite definirea variabilelor utilizator de tip CHAR prin:

DEFINE variabila = valoare

Variabila ramane definita pana cand fie se paraseste SQL*Plus, fie se da comanda UNDEFINE pentru variabila respectiva.

Tiparirea tuturor variabilelor utilizator, a valorilor si tipurilor acestora se obtine prin forma DEFINE.

Exemplu

SQL> DEFINE autor1 = Zola

SQL> DEFINE autor2 = Blaga

SQL> SELECT titlu, nrex

2 FROM carte

3 WHERE autor = '&autor1'

4 OR autor = '&autor2';

Setari in SQL*Plus

Pentru a preciza optiunile de lucru cu SQL*Plus se utilizeaza comanda SET. Setarile SQL standard se gasesc in fisierul login.sql, care poate fi modificat pentru a contine setari aditionale. Cand se termina sesiunea toate setarile sunt pierdute.

Comanda SET are doua forme sintactice:

una din ele se foloseste ca Help pentru utilizator;

cealalta se foloseste pentru setarea variabilelor sistem.

O variabila sistem este un camp rezervat in care se retine o valoare de catre sistemul Oracle, valoare care indica o stare a sistemului. Pentru a afisa valorile tuturor variabilelor de mediu la un moment dat se utilizeaza comanda SHOW ALL.

SET  variabila_sistem  valoare

Parametrul variabila_sistem poate lua oricare din valorile care apar la executia comenzii SHOW ALL.

In continuare sunt prezentate numai o parte a acestor setari (in special cele folosite la formatarea rapoartelor) impreuna cu valorile pe care le poate lua parametrul valoare.

SET RECSEP - controleaza tiparirea separatorilor de inregistrari. Cele trei valori posibile au urmatoarele semnificatii:

WRAPPED tipareste un separator dupa fiecare linie a unei inregistrari (chiar daca aceasta cuprinde mai multe linii);

EACH face acelasi lucru, dar numai la sfarsitul unei inregistrari;

OFF anuleaza tiparirea unui separator.

SET RECSEPCHAR - seteaza caracterul ce separa inregistrarile;

SET SPACE - seteaza numarul de spatii intre coloane.

SET WRA[P] - specifica modul de afisare a inregistrarilor (trunchiat sau pe o linie).

SET NULL text - specifica textul afisat in locul valorii NULL.

SET HEADS[EP] - specifica caracterele ce separa numele coloanelor de inregistrari.

SET UND[ERLINE] - specifica caracterul folosit pentru sublinierea numelor coloanelor.

SET NEWP[AGE] - seteaza numarul de linii vide lasate la inceputul fiecarei pagini.

SET TERM[OUT] - controleaza afisarea output-ului generat de comenzi executate dintr-un script.

SET PAGES[IZE] - specifica numarul de linii afisate pe pagina (n implicit este 24; se poate seta la valoarea 0 pentru a suprima afisarea numelor coloanelor, a titlului unui raport).

SET FEED[BACK] - controleaza afisarea numarului de inregistrari furnizate ca rezultat de o comanda SELECT.

SET ECHO - controleaza afisarea comenzilor dintr-un script SQL lansat cu comanda START, pe masura ce acestea sunt executate.

Comanda SPOOL permite salvarea rezultatelor unei interogari intr-un fisier indicat ca parametru. Ea are urmatoarea sintaxa:

SPO[OL] [ file_name[. ext] | OFF | OUT]

Formatarea rezultatelor

Pentru afisarea unui titlu la inceputul sau sfarsitul fiecarei pagini a unui raport se folosesc comenzile TTITLE sau BTITLE, avand sintaxa urmatoare:

[TLE] [spec_tiparire [text | variabila]] [OFF | ON]

Semnificatia parametrilor impreuna cu valorile posibile sunt:

spec_tiparire controleaza amplasamentul si formatarea titlului prin combinarea unora dintre urmatoarele optiuni:

COL n indenteaza titlul la coloana n a liniei curente;

S[KIP] n realizeaza un salt peste n linii, la inceputul unei noi linii; daca n are valoarea 0, atunci sare la inceputul liniei curente;

TAB n realizeaza un salt peste n coloane pe linia curenta (salt inainte daca n este pozitiv si salt inapoi daca n este negativ);

LE[FT], CE[NTER], RI[GHT] aliniaza datele la stanga, in centru sau la dreapta;

BOLD realizeaza ingrosarea caracterelor textului;

FOR[MAT] format - formateaza coloana conform cu specificatia data de format (de exemplu, daca coloana este de tip caracter atunci An are semnificatia ca valoarea coloanei se va scrie pe n caractere la afisare);

text reprezinta textul titlului incadrat de ghilimele simple (in cazul in care contine mai multe cuvinte se poate folosi caracterul '|' pentru impartirea unui titlu pe mai multe linii);

variabila este o variabila sistem sau o variabila definita de utilizator (de exemplu, SQL.PNO este o variabila sistem care specifica numarul paginii curente; SQL.LNO specifica numarul liniei curente; variabila SQL.USER specifica numarul utilizatorului curent etc.).



Comanda COLUMN permite controlul afisarii coloanelor si a numelor.

COL[UMN] [ [optiune]]

coloana este numele coloanei asupra careia se aplica sau careia i se citeste formatarea intr-o comanda SELECT.

Valorile parametrului optiune pot fi:

NOPRI[NT] | PRI[NT] - controleaza afisarea unei coloane;

ALI[as] alias - specifica un alias pentru coloana sau expresia respectiva;

CLE[AR] - reseteaza atributele de afisare ale coloanei; pentru a face acest lucru pentru toate coloanele se foloseste comanda CLEAR COLUMNS;

HEA[DING] text - seteaza numele coloanei text;

NEW_V[ALUE] - specifica o variabila in care se retine valoarea unei coloane; variabila poate fi apoi referentiata in comanda TTITLE; numele coloanei trebuie inclus intr-o comanda BREAK impreuna cu SKIP PAGE; aceasta optiune este utila atunci cand trebuie facute rapoarte master/detail si fiecare inregistrare master trebuie sa apara pe o noua pagina;

OLD_V[ALUE] - semnificatia este cea anterioara, dar cu deosebirea ca referentierea variabilei se face intr-o comanda BTITLE;

JUS[TIFY] - aliniaza numele coloanelor (implicit are valoarea R[IGHT]);

FOR[MAT] format - aceeasi semnificatie ca cea descrisa pentru BTITLE sau TTITLE.

Exemplu

COLUMN sal JUSTIFY LEFT

COLUMN autor NULL 'necunoscut'

SQL*Plus permite regruparea liniilor rezultatului in functie de una sau mai multe valori ale coloanelor si eventual efectuarea unor actiuni la fiecare rupere. Liniile rezultatului trebuie sa fie ordonate (ORDER BY) dupa coloana in functie de ale carei valori se fac ruperile.

Elementul dupa care se face fragmentarea poate fi:

un nume de coloana sau o expresie (valoarea coloanei sau a expresiei este afisata doar pentru prima linie a grupului);

ROW (actiunea este executata pentru fiecare linie);

REPORT (actiunea este executata la sfarsitul raportului).

Comanda BREAK modifica formatul unui raport intr-unul din modurile:

suprima afisarea valorilor duplicate pentru o anumita coloana;

sare peste o linie cand valoarea unei coloane se schimba;

tipareste expresii calculate utilizand comanda COMPUTE de fiecare data cand valoarea unei coloane se modifica sau la sfarsitul unui raport.

BRE[AK] [ON element_fragmentare [actiune [actiune].]]

Parametrii acesteia au forma:

element_fragmentare

actiune [SKI[P] n | [SKI[P]] PAGE] [NODUP[LICATES] | DUP[LICATES]]

Exemplu

BREAK ON autor SKIP 4 ON intdom SKIP 2

Utilizatorul poate realiza operatii de calcul asupra liniilor fiecarui subansamblu creat prin BREAK.

Pentru calculul anumitor functii standard (pe coloane) se foloseste comanda COMPUTE care are urmatoarea forma sintactica:

COMP[UTE]  [function  [LAB[ELtext] .

           OF   .

           ON   .]

Optiunile au urmatoarele semnificatii:

function poate fi una dintre functiile AVG, COU[NT], MAX[IMUM], MIN[IMUM], NUM[BER], STD, SUM, VAR[IANCE];

text defineste eticheta afisata pentru valoarea calculata;

OF  specifica coloanele sau expresiile folosite in functia calculata; acestea trebuie sa apara si in comanda SELECT, altfel SQL*Plus ignora comanda COMPUTE; column nu poate fi atasata unui tabel sau unei vizualizari decat folosind un alias pentru coloana respectiva;

ON  specifica evenimentul folosit de SQL*Plus ca break, adica elementul de fragmentare.

Ca si in cazul comenzilor COLUMN sau BREAK, COMPUTE fara nici o clauza listeaza toate definitiile de COMPUTE.

Pentru realizarea corecta a calculului functiei trebuie indeplinite conditiile:

una sau mai multe dintre expresiile, coloanele sau alias-urile de coloane referentiate in clauza OF trebuie sa apara si in comanda SELECT;

expresia, coloana sau alias-ul de coloana referentiat in clauza ON trebuie sa apara in comanda SELECT si in cea mai recenta comanda BREAK;

daca ROW sau REPORT sunt referentiate in clauza ON atunci ele trebuie sa apara si in cea mai recenta comanda BREAK.

Exemplu

Sa se calculeze valoarea medie a preturilor cartilor fiecarui autor.

BREAK ON autor SKIP 1

COMPUTE AVG OF pret ON autor

SELECT autor,pret

FROM carte

ORDER BY autor;

Comanda CL[EAR] optiune permite resetarea valorilor specificate in anumite optiuni. Parametrul optiune reprezinta una din urmatoarele clauze: BRE[AKS] , BUFF[ER], COL[UMNS], COMP[UTES], SCR[EEN], SQL, TIMI[NG].

Copierea datelor

Pentru a copia datele furnizate de o interogare intr-un tabel aflat intr-o baza de date locala sau la distanta se poate folosi comanda COPY, care permite:

copierea unui tabel dintr-o baza locala intr-o baza distanta (optiunea FROM poate fi omisa);

copierea unui tabel dintr-o baza distanta intr-o baza locala (optiunea TO poate fi omisa);

copierea unui tabel dintr-o baza distanta intr-o baza distanta.

COPY

          destination_table [(column, column, )]

        USING query

database_specification reprezinta un sir de conectare SQL*Net;

APPEND insereaza liniile intoarse de query in destination_table daca acesta exista; in caz contrar, creeaza in prealabil tabelul;

CREATE insereaza liniile intoarse de query in destination_table, dupa ce creeaza tabelul; daca acesta deja exista, COPY returneaza o eroare;

INSERT insereaza liniile intoarse de query in destination_table; daca tabelul nu exista COPY returneaza o eroare; cand se foloseste optiunea INSERT, clauza USING query trebuie sa selecteze cate o coloana pentru fiecare coloana din destination_table;

REPLACE inlocuieste destination_table si continutul sau cu liniile intoarse de query; daca destination_table nu exista, atunci COPY creaza tabelul; altfel, COPY sterge mai intai tabelul existent si il inlocuieste cu un tabel ce contine datele copiate.

Exemplu

Sa se inlocuiasca continutul tabelului produse cu informatii ce provin dintr-o baza de date distanta (biblioteca). Aceste informatii se refera la cartile de informatica din tabelul carte.

COPY FROM vasile/ana@biblioteca

REPLACE produse

USING SELECT *

FROM carte

WHERE coded = 'I';

Exemplu

Sa se creeze un fisier care tipareste codul cartilor imprumutate si codul cititorilor care au imprumutat aceste carti, la o data ce apartine unui interval specificat. Sa se concateneze cele doua coduri astfel incat sa apara separate prin virgula si avand numele informatii.

Solutie

SET ECHO OFF FEEDBACK OFF

ACCEPT low_date DATE FORMAT 'MM/DD/YY' -

PROMPT 'dati limita inferioara a datei:'

ACCEPT high_date DATE FORMAT 'MM/DD/YY' -

PROMPT 'dati limita superioara a datei:'

COLUMN informatii FORMAT A25

SELECT codel || ',' || codec informatii, dataim

FROM imprumuta

WHERE dataim BETWEEN

TO_DATE('&low_date', 'MM/DD/YY')

AND TO_DATE('&high_date', 'MM/DD/YY')

UNDEFINE low_date

UNDEFINE high_date

CLEAR COLUMNS

SET ECHO ON 

SET FEEDBACK ON



Exemplu

Sa se creeze un fisier care tipareste un raport grupat pe autori, continand: numele autorului, titlul cartilor sale din biblioteca, domeniul fiecarei carti si valoarea totala a fiecarei carti. Aceste rezultate sunt obtinute pentru cartile din biblioteca care sunt intr-un numar de exemplare specificat. Rezultatele sa apara sub forma:

NUME TITLU DOMENIU VALOARE

AUTOR CARTE CARTE TOTALA

Oprean Grupuri Algebra 55,000

Inele Algebra 63,768

Solutie

SET ECHO OFF FEEDBACK OFF

ACCEPT num PROMPT 'Dati numarul de exemplare:'

COLUMN autor HEADING 'NUME|AUTOR' FORMAT A15

COLUMN titlu HEADING 'TITLU|CARTE' FORMAT A15

COLUMN intdom HEADING 'DOMENIU|CARTE' FORMAT A15

COLUMN val HEADING 'VALOARE|TOTALA' FORMAT $99,999

BREAK ON autor

SELECT autor, titlu, intdom, pret*nrex val

FROM  carte c, domeniu d

WHERE c.coded = d.coded

AND nrex = &num

ORDER BY autor

UNDEFINE num

SET ECHO ON FEEDBACK ON

CLEAR BREAKS

CLEAR COLUMNS

Exemplu

Sa se creeze un script la a carui rulare sa apara urmatorul raport:

CONTRACTELE SUBANTREPRENORULUI CONSTRUCT SA

LA DATA DE 14/10/2001

NUMAR VALOARE

NUME CONTRACT CONTRACT

----- ----- ------ ----- ----- -----

CONSTRUCT SA  100 50000

101 120000

---------

VALOAREA MAXIMA 120000

TOTAL  170000

Pagina 1

CONTRACTELE SUBANTREPRENORULUI ERBASU SA

LA DATA DE 14/10/2001

NUMAR VALOARE

NUME CONTRACT CONTRACT

----- ----- ----- ----- ----- ------

ERBASU SA 107 20000

108 300000

109 750000

---------

VALOAREA MAXIMA  750000

TOTAL  1070000

Pagina 2

CONTRACTELE SUBANTREPRENORULUI GAUDI

LA DATA DE 14/10/2001

NUMAR VALOARE

NUME  CONTRACT CONTRACT

----------- ----- ----- ----- ----- ----- ------

GAUDI 104 500000

105 27000

106 10000

---------

VALOAREA MAXIMA 500000

TOTAL  537000

Pagina 3

Solutie

SET ECHO OFF FEEDBACK OFF

COLUMN cod NOPRINT

COLUMN name NEW_VALUE nv_name HEADING 'NUME'

COLUMN nrct FORMAT A8 HEADING 'NUMAR|CONTRACT'

COLUMN val HEADING 'VALOARE|CONTRACT'

COLUMN azi NOPRINT NEW_VALUE nv_azi

TTITLE SKIP 1 LEFT 'CONTRACTELE SUBANTREPRENORULUI'-

       nv_name SKIP 1 LEFT 'LA DATA DE 'nv_azi SKIP 2 

BTITLE SKIP 1 LEFT 'Pagina:' FORMAT 99 SQL.PNO 

COMPUTE MAX LABEL 'VALOAREA MAXIMA' SUM LABEL -

          'TOTAL' OF val ON name

BREAK ON name SKIP PAGE ON name

SELECT   ct.cod_contractant cod,sub.nume name, 

         ct.nr_contract nrct, ct.val_investitie val,          TO_CHAR(SYSDATE,'DD/MM/YYYY') azi

FROM     contract ct, subantreprenor sub

WHERE    ct.cod_contractant = sub.cod_contractant 

AND      ct.tip_contract = 1

ORDER BY cod

SET ECHO ON FEEDBACK ON

CLEAR BREAKS

CLEAR COLUMNS

CLEAR COMPUTES

Exemplu

Presupunem ca tabelul carte contine un camp suplimentar numit tip, prin care se specifica tipul unei carti. Acest tip poate fi: roman, poezie, monografie, culegere sau diverse. Sa se genereze un raport care sa contina pentru fiecare autor: numarul exemplarelor de fiecare tip scrise de acesta si numarul total de exemplare. De asemenea, sa se obtina in finalul raportului, numarul exemplarelor de fiecare tip din biblioteca.

Solutie

SET ECHO OFF FEEDBACK OFF

COLUMN autor FORMAT A12 HEADING 'Nume|autor'

COLUMN roman FORMAT 99999 HEADING 'Roman'

COLUMN poezie FORMAT 99999 HEADING 'Poezie'

COLUMN monografie FORMAT 99999 HEADING Monografie'

COLUMN culegere FORMAT 99999 HEADING 'Culegere'

COLUMN diverse FORMAT 99999 HEADING 'Diverse'

COLUMN total FORMAT 99999 HEADING 'Total'

BREAK ON REPORT SKIP 2

COMPUTE SUM OF roman ON REPORT

COMPUTE SUM OF poezie ON REPORT

COMPUTE SUM OF monografie ON REPORT

COMPUTE SUM OF culegere ON REPORT

COMPUTE SUM OF diverse ON REPORT

COMPUTE SUM OF total ON REPORT

TTITLE CENTER 'Raport carte'

SELECT autor,

SUM(DECODE(tip,'roman',nrex,0)) roman,

SUM(DECODE(tip,'poezie',nrex,0)) poezie,

SUM(DECODE(tip,'monografie',nrex,0))monografie,

SUM(DECODE(tip,'culegere',nrex,0))culegere,

SUM(DECODE(tip,'diverse',nrex,0)) diverse,

SUM(nrex) total

FROM carte

GROUP BY autor

/

CLEAR BREAKS

CLEAR COLUMNS

CLEAR COMPUTES

SET ECHO ON FEEDBACK ON

Exemplu

Sa se genereze un raport prin care sa se obtina pentru fiecare domeniu de carte informatii despre numele domeniului, titlurile cartilor din domeniu, numarul de exemplare din fiecare carte si din fiecare domeniu, iar in final raportul sa contina si numarul total de carti din biblioteca.

Solutie

SET ECHO OFF FEEDBACK OFF

COLUMN intdom FORMAT A25 HEADING 'denumire|domeniu'

COLUMN titlu FORMAT A30 HEADING 'titlu|carte'

COLUMN nrex FORMAT 99999 HEADING 'numar|carti'

BREAK ON intdom SKIP 2 ON REPORT SKIP 1

COMPUTE SUM OF nrex ON intdom

COMPUTE SUM OF nrex ON REPORT

TTITLE CENTER 'Raport carti' SKIP 1 LINE

SELECT intdom, titlu, nrex

FROM carte c, domeniu d

WHERE c.coded = d.coded

ORDER BY intdom

/

COLUMN denumire CLEAR

COLUMN titlu CLEAR

COLUMN nrex CLEAR

CLEAR BREAKS

CLEAR COMPUTES

SET ECHO ON FEEDBACK ON

Observatii

In iSQL*Plus, se actioneaza butonul Execute pentru executarea comenzilor din fereastra de editare. Implicit, capul de tabel este centrat si afisat cu litere majuscule.

Pentru a accesa iSQL*Plus este necesara adresa URL. Aceasta cere un host name (este dat de instructor).

Valoarea null este diferita de zero (care este un numar) sau de spatiu (care este un caracter).

Pentru a crea si asigna o valoare unei variabile se poate utiliza comanda DEFINE, iar stergerea acesteia se face prin comanda UNDEFINE.

SET VERIFY ON forteaza iSQL*Plus sa tipareasca textul unei comenzi inainte si dupa substituirea variabilelor de substitutie cu valori.





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1100
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved