ALTE DOCUMENTE
|
|||||||
Functiile sunt operatii predefinite care manipuleaza date si returneaza un rezultat. Functiile pot genera doua tipuri de date de iesire. Primul tip de date de iesire ii reprezinta datele de intrare dupa manipularea acestora, iar la doilea tip de date de iesire va furnizeaza informatii în legatura cu datele de intrare. De exemplu, o functie poate converti la majuscule toate caracterele sirului de intrare; alta functie poate retuma numarul de caractere din sinii de intrare.
Exista doua tipuri de functie:
Functii mono-linie
Functii multi-linie sau de grup
Deosebirea dintre aceste doua tipuri de functii este data de numarul de linii asupra carora actioneaza. Dupa cum sugereaza numele, o functie mono-linie returneaza o singura linie pentru fiecare linie a unui tabel sau a unei vederi interogate. Functiile multi-linie sau de grup returneaza o singura linie pentru un grup de linii interogate.
Atunci când creati o functie creati un obiect Oracle de sine statator care s 23523e43x e gaseste în schema dumneavoastra. Functiile sunt asemanatoare operatorilor, cu exceptia faptului ca primele pot actiona asupra unor argumente multiple.
Functiile sunt create pentru a rezolva anumite probleme sau pentru a efectua un set de sarcini. Functiile sunt create pentru a gestiona prelucrarile repetitive cum ar fi calcularea vânzarilor medii lunare.
Functiile va ofera avantaje în urmatoarele domenii:
Performanta
Alocarea memoriei
Integritate
Dezvoltarea aplicatiilor
Performantele serverului cresc deoarece forma compilata a functiei este oricând disponibila bazei de date. Nu este necesara compilarea functiilor înainte de executarea lor. O crestere suplimentara a performantelor se datoreaza reducerii traficului în retea deoarece functiile se afla deja stocate în memorie. Atunci când utilizeaza functii, aplicatia nu trebuie sa transmita instructiuni SQL sau pachete PL/SQL prin intermediul retelei. In sfârsit, daca functia sa gaseste deja în zona globala a sistemului (SGA), programul Oracle nu trebuie sa o citesca de pe disc el executa imediat copia existenta în zona SGA.
Prin utilizarea functiilor se îmbunatateste alocarea memoriei deoarece functiile beneficiaza de caracteristicile mediului Oracle de partajare a memoriei. Aceasta înseamna ca este suficient sa fie încarcata în memorie o singura copie a functiei în vederea executarii ei de mai multi utilizatori.
Functiile îmbunatatesc integritatea si coerenta aplicatiilor dumneavoastra. Datorita faptului ca toti programatorii unei echipe de proiectare folosesc acelasi set de functii, codificarea devine mai coerenta si se reduce probabilitatea de aparitie a greselilor de codificare.
Prin conceperea aplicatiilor pe baza unui set unitar de functii se evita codificarea redundanta si creste productivitatea dezvoltarii de aplicatii.
Paragrafele care urmeaza descriu fiecare functie, precum si sintaxa generala a lor.
Sintaxa generala a functiilor este urmatoarea:
functie (argument1, argument2, ...)
Sunt prezentate pe rând cele doua categorii: functii mono-linie si functiide grup.
Dupa cum sugereaza numele, functiile mono-linie returneaza un singur rezultat pentru fiecare linie a unui tabel sau'a unei vederi interogate.
Functiile caracter primesc ca date de intrare siruri de caractere si returneaza valori de tip caracter. In cazul functiilor care returneaza date de tip varchar2, lungimea maxima a datelor de iesire este de 200 octeti; în cazul functiilor care returneaza date de tip char, lungimea maxima a datelor de iesire este de 255 octeti. Daca lungimea valorii returnate depaseste aceste limite, programul Oracle returneaza o valoare trunchiata fara a genera d eroare.
ASCII |
Returneaza echivalentul zecimal al unui caracter ASCII |
Sintaxa: ascii(char) Exemplu select ascii('B') from dual; Date de iesire: ascii('B') |
|
CHR |
Returneaza caracterul ASCII corespunzator valorii întregi furnizate ca argument. De exemplu, echivalentul ASCII al literei K este 75. |
Sintaxa: CHR(integer) Exemplu: select chr(75) from dual; Date de iesire: C K |
|
CONCAT |
Returneaza rezultatul concatenarii expresiei 1 cu expresia 2. Aceasta functie este echivalenta cu utilizarea comenzii II în instructiunea SQL. |
Sintaxa: concat(sirl, sir2) Exemplu: select concat (regiune, stat) from lista_filiale; Date de iesire: concat (regiune, stat) midwestohio |
|
LENGTH |
Returneaza numarul de caractere (lungimea) al sirului de intrare. |
Sintaxa: length(char) Exemplu: select length('ABCDEFGHIJ') from dual; Date de iesire: LENGTH('ABCDEFGHIJ' ) |
|
LOWER |
Returneaza sirul de intrare dupa trecerea tuturor caracterelor la litere mici. |
Sintaxa: lower(char) Exemplu: select lower('MISSISSIPPI1) from dual; Date de iesire: LOWER('MISSISSIPPI') mississippi |
|
LPAD |
Returneaza sirul de intrare în stânga caruia este adaugata secventa de caractere din cel de-al treilea argument. Aceasta functie are trei argumente: primul este sirul de intrare; al doilea este lungimea maxima a valorii returnate; iar al treilea este secventa de caractere care va fi adaugata. |
Sintaxa: lpad(sir de intrare, lungime, secventa de completare) Exemplu: select lpad('AVERTISMENT: ',20,'***** ') from dual; Date de iesire: LPAD('AVERTISMENT: ',20,') ***** *****AVERTISMENT: |
|
LTRIM |
Returneaza sirul rezultat prin eliminarea din sirul de intrare a tuturor caracterelor pâna la întâlnirea unui caracter din setul (sirul) specificat de caractere. |
Sintaxa: ltrim(sir intrare, set caractere) Exemplu: select ltrim('chicago','ic') from dual; Date de iesire: LTRIM( chicago |
|
REPLACE |
Returneaza sirul de intrare în care fiecare aparitie a sirului de cautare este înlocuita cu sirul de nlocuire. |
Sintaxa: replace(sir intrare,sir cautare,sir înlocuire) Exemplu: select replace('Pete','Pe','123') from dual; Date de iesire: REPLA 123TE |
|
RPAD |
Adauga valorile furnizate de al treilea argument la dreapta sirului de intrare. |
Sintaxa: rpad(sir de intrare, lungime, secventa de completare) Exemplu: select rpad(tom',6, '!") FROM DUAL; Date de iesire: RPAD( tom111 |
|
RTRIM |
Returneaza sirul rezultat prin eliminarea din sirul de intrare a caracterelor care urmeaza dupa ultimul caracter care nu este inclus în setul de caractere specificat de al doilea argument. |
Sintaxa: rtrim(sir intrare, set caractere) Exemplu: select rtrim('Tomlll','l') from dual; Date de iesire: RTR Tom |
|
SUBSTR |
Returneaza o portiune a sirului de intrare care începe în pozitia specificata de al doilea argument si are lungimea precizata de al treilea argument. |
Sintaxa: Substr(sir intrare,pozitie inceput,lungime) Exemplu: select substr('ABCDEFGH',5,3) fromdual; Date de iesire: SUB EFG |
|
UPPER |
Returneaza sirul de intrare dupa trecerea tuturor caracterelor'la majuscule. |
Sintaxa: upper(char) Exemplu: select upper('cincinnati') From dual; Date de iesire: UPPER('CIN CINCINNATI |
Functiile numerice primesc date de intrare numerice si returneaza o valoare numerica.
ABS |
Returneaza valoarea absoluta a valorii de intrare. |
Sintaxa: abs(n) Exemplu: select abs(3) from dual; Date de iesire: ABS(3) |
|
POWER |
Returneaza valoarea de intrare ridicata la puterea n. |
Sintaxa: power(valoare,n) Exemplu: select power(4,2) from dual; Date de iesire: POWER(4,2) |
|
ROUND |
Rotunjeste valoarea de intrare la numarul specificat de pozitii zecimale. |
Sintaxa: round(valoare intrare,precizie) Exemplu: select round(123.456,2) from dual; Date de iesire: ROUND(123.456,2) |
|
TRUNC |
Trunchiaza valoarea de intrare la numarul specificat de pozitii zecimale. |
Sintaxa: trunc(valoare intrare,precizie) Exemplu: select trunc(213.456,2) FROM DUAL; Date de iesire: TRUNC(213.456,2) |
Aceste functii primesc argumente de tip data calendaristica (date).
ADD_MONTHS |
Returneaza o data reprezentând data specificata plus numarul specificat de luni. în exemplul urmator, data curenta este 1 Ianuarie 1995. |
Sintaxa: add_months(data, numar de luni) Exemplu: select add_months(sysdate,6) FROM DUAL; Date de iesire: ADD_MONTH 1-JUL-95 |
|
LAST_DAY |
Returneaza ultima zi a lunii specificate. |
Sintaxa: last_day(data) Exemplu: select last_day('1-may-95') FROM DUAL; Date de iesire: LAST_DAY( 31-MAY-95 |
|
MONTHS_BETWEEN |
Returneaza numarul de luni la care data2 precede data1. |
Sintaxa: months_between(datai,data2) Exemplu: select months_between(fl-MAR-951,'l-JAN-951) from dual; Date de iesire: MONTHS_BETWEEN('1-MAR-951,'1-JAN-95') |
|
SYSDATE |
Returneaza data si ora curenta ale sistemului. Aceasta functie nu necesita argumente. |
Sintaxa: sysdate Exemplu: select sysdate from dual; Date de iesire: SYSDATE 13-AUG-95 |
Functiile de conversie convertesc valorile de intrare dintr un tip de data în altul.
TO_CHAR |
Converteste o data sau un numar într un sir de caractere |
Sintaxa: to_char(intrare,format) Exemplu: select to_char(SYSDATE,'mm/dd/yy') from dual; Date de iesire: TO_CHAR(SYSDATE,'MM/DD/YY') |
|
TO_DATE |
Converteste o valoare numerica sau de tip caracter la tipul date |
Sintaxa: to_date(sir,format) Exemplu: select to_date('04/21/94','MM/DD/YY') from dual; Date de iesire: TO_DATE(' 21-APR-94 |
|
TO_NUMBER |
Converteste un sir de caractere într un format numeric |
Sintaxa: to_number(sir caractere,format) Exemplu: select to_number('1234.56') FROM DUAL; Date de iesire: TO_NUMBER('1234.56') |
Exista mai multe functii care nu se încadreaza în nici una dintre gruparile anterioare.
DUMP |
Returneaza o valoare de tip varchar2 care contine tipul de data, lungimea si reprezentarea interna a expresiei. Printre argumentele de intrare se numara si codul de format al valorii retumate. Pentru specificarea formatului dorit pentru valoarea returnata, se folosesc codurile urmatoare: Returneaza notatia octala Returneaza notatia zecimala Returneaza notatia hexazecimala Returneaza câte un caracter |
Sintaxa: Dump(sir, format, pozitie început, pozitie sfârsit) Exemplu: select dump('CITY',16,1,8) from dual; Date de iesire: DUMP('city',16,1,8) Typ=96 Len=4: 63,69,74,79 |
|
GREATEST |
Returneaza cea mai mare valoare dintr-o lista de valori de intrare. |
Sintaxa: greatest(valoare1,valoare2,...) Exemplu: select greatest('Tom', "Tim', 'Terry') FROM DUAL; Date de iesire: GREATEST Tom |
|
LEAST |
Returneaza cea mai mica valoare dintr-o lista de valori de intrare. |
Sintaxa: least(valoare1,valoare2,...) Exemplu: select least('Tom','Tim','Terry') from dual; Date de iesire: LEAST Terry |
|
USER |
Returneaza numele utilizatorului curent al bazei de date Oracle. Aceasta functie nu necesita nici un argument. |
Sintaxa: User Exemplu: select user from dual; Date de iesire: USER ops$user_1 |
Functiile de grup retumeaza o singura valoare pentru un grup de linii interogate.
AVG |
Returneaza valoarea medie pentru un grup de linii. |
Sintaxa: avg(valoare) Exemplu: select avg(vânzari lunare) from comenzi; Date de iesire: AVG(vanzari_lunare) |
|
COUNT |
Returneaza numarul de linii dintr-o interogare în functia count, puteti utiliza urmatorii specificatori: * Indica returnarea tuturor liniilor interogarii |
distinct |
Returneaza numarul de linii distincte identificate în interogare |
Sintaxa: Count Exemplu: select count(*) from comenzi; Date de iesire: COUNT(*) |
|
MAX |
Returneaza valoarea maxima a expresiei. |
Sintaxa: max(expresie) Exemplu: select max(vanzari_lunare) from comenzi; Date de iesire: MAX(vanzari_lunare) |
|
MIN |
Returneaza valoarea minima a expresiei. |
Sintaxa: min(expresie) Exemplu: select min(vanzari_lunare) FROM comenzi; Date de iesire: MIN(vanzari_lunare) |
|
SUM |
Returneaza suma valorilor expresiei. |
Sintaxa: sum(expresie) Exemplu: select sum(vanzari_lunare) from comenzi; Date de iesire: SUM(vanzari_lunare) |
Functiile sunt rutine predefinite care manipuleaza date si returneaza o valoare. Functiile retumeaza o valoare care fie descrie datele de intrare, fie reprezinta rezultatul manipularii datelor de intrare.
Utilizarea functiilor prezinta numeroase avantaje. Printre acestea se numara si îmbunatatirea performantelor serverului Oracle, îmbunatatirea alocarii memoriei, scaderea timpului necesar dezvoltarii aplicatiilor si sporirea integritatii bazei de date.
Functiile se utilizeaza în instructiuni SQL, pentru satisfacerea unor nevoi de programare specifice. Functiile mono-linie returneaza un rezultat pentru fiecare linie a unei interogari, în timp ce functiile de grup returneaza un singur rezultat pentru un grup de linii ale unei interogari.
|