functii oracle

Upload: alexandru-badescu

Post on 14-Jul-2015

130 views

Category:

Documents


0 download

TRANSCRIPT

Funcii SQLFuncii single-row Funcii multiple-row (funcii agregat) I. Funciile single row returneaz o singur linie rezultat pentru fiecare linie a tabelului sau vizualizrii interogate. Aceste funcii pot aprea n listele SELECT, clauzele WHERE, START WITH, CONNECT BY i HAVING. n ceea ce privete tipul argumentelor asupra crora opereaz i al rezultatelor furnizate, funciile single row pot fi clasificate n clase corespunztoare. Funciile de conversie cele mai importante sunt: - TO_CHAR convertete un numr sau o dat calendaristic n ir de caractere; - TO_DATE convertete un numr sau un ir de caractere n dat calendaristic; - TO_NUMBER convertete un ir de caractere n numr. Obs: Exista doua tipuri de conversii: - implicite, realizate de sistem atunci cand este necesar; - explicite, indicate de utilizator prin intermediul functiilor de conversie. Conversiile implicite asigurate de server-ul Oracle sunt: - de la VARCHAR2 sau CHAR la NUMBER; - de la VARCHAR2 sau CHAR la DATE; - de la NUMBER la VARCHAR2 sau CHAR; - de la DATE la VARCHAR2 sau CHAR. Funciile pentru prelucrarea caracterelor sunt: - LENGTH(string) ntoarce lungimea irului de caractere string; - SUBSTR(string, start [,n]) ntoarce subirul lui string care ncepe pe poziia start i are lungimea n; dac n nu este specificat, subirul se termin la sfritul lui string; - LTRIM(string [,chars]) terge din stnga irului string orice caracter care apare n chars, pn la gsirea primului caracter care nu este n chars; n cazul n care chars nu este specificat, se terg spaiile libere din stnga lui string; - RTRIM(string [,chars]) este similar funciei LTRIM, cu excepia faptului c tergerea se face la dreapta irului de caractere; - LPAD(string, length [,chars]) adaug chars la stnga irului de caractere string pn cnd lungimea noului ir devine length; n cazul n care chars nu este specificat, atunci se adaug spaii libere la stnga lui string; - RPAD(string, length [,chars]) este similar funciei LPAD, dar adugarea de caractere se face la dreapta irului; - REPLACE(string1, string2 [,string3]) ntoarce string1 cu toate apariiile lui string2 nlocuite prin string3; dac string3 nu este specificat, atunci toate apariiile lui string2 sunt terse; - UPPER(string), LOWER(string) transform toate literele irului de caractere string n majuscule, respectiv minuscule; - INITCAP(string) transform primul caracter al irului n majuscul; - INSTR(string, chars [,start [,n]]) caut n string, ncepnd de de la poziia start, a n-a apariie a secvenei chars i ntoarce poziia respectiv; dac start nu este

specificat, cutarea se face de la nceputul irului; dac n nu este specificat, se caut prima apariie a secvenei chars; - ASCII(char) furnizeaz codul ASCII al unui caracter; - CHR(num) ntoarce caracterul corespunztor codului ASCII specificat; - CONCAT(string1, string2) realizeaz concatenarea a dou iruri de caractere; - SOUNDEX(string) ntoarce reprezentarea fonetic a irului de caractere specificat; - TRANSLATE(string, from, to) fiecare caracter care apare n irurile de caractere string i from este transformat n caracterul corespunztor (aflat pe aceeai poziie ca i n from) din irul de caractere to; Funciile aritmetice single-row pot opera asupra: - unei singure valori, i aceste funcii sunt ABS (valoarea absolut), CEIL (partea ntreag superioar), FLOOR (partea ntreag inferioar), STDDEV (deviaia standard), VARIANCE (dispersia), ROUND (rotunjire cu un numr specificat de zecimale), TRUNC (trunchiere cu un numr specificat de zecimale), EXP (ridicarea la putere a lui e), LN (logaritm natural), LOG (logaritm ntr-o baz specificat), MOD (restul mpririi a dou numere specificate), POWER (ridicarea la putere), SIGN (semnul unui numr), COS (cosinus), COSH (cosinus hiperbolic), SIN (sinus), SINH (sinus hiperbolic), SQRT (rdcina ptrat), TAN (tangent), TANH (tangent hiperbolic); - unei liste de valori, iar acestea sunt funciile LEAST i GREATEST, care ntorc cea mai mic, respectiv cea mai mare valoare a unei liste de expresii. Funciile pentru prelucrarea datelor calendaristice sunt: - SYSDATE ntoarce data i timpul curent; - ADD_MONTHS(d, count) ntoarce data care este dup count luni de la data d; - NEXT_DAY(d, day) ntoarce urmtoarea dat dup data d, a crei zi a sptmnii este cea specificat prin irul de caractere day; - LAST_DAY(d) ntoarce data corespunztoare ultimei zile a lunii din care data d face parte; - MONTHS_BETWEEN(d2, d1) ntoarce numrul de luni dintre cele dou date calendaristice specificate; - NEWTIME(data, zona_intrare, zona_iesire) returneaz ora din zona_intrare corespunztoare orei din zona_iesire; - TRUNC(d) ntoarce data d, dar cu timpul setat la ora 12:00 AM (miezul nopii); - ROUND(d) dac data d este nainte de miezul zilei, ntoarce data d cu timpul setat la ora 12:00 AM; altfel, este returnat data corespunztoare zilei urmtoare, cu timpul setat la ora 12:00 AM; - LEAST(d1, d2, , dn), GREATEST(d1, d2, , dn) dintr-o list de date calendaristice, funciile ntorc prima, respectiv ultima dat n ordine cronologic. Funcii diverse: - DECODE(value, if1, then1, if2, then2, , ifN, thenN, else) returneaz then1 dac value este egal cu if1, then2 dac value este egal cu if2 etc.; dac value nu este egal cu nici una din valorile if, atunci funcia ntoarce valoarea else; - NVL(e1, e2) dac e1 este NULL, ntoarce e2; altfel, ntoarce e1; - NVL2(e1, e2, e3) dac e1 este NULL, ntoarce e2, altfel ntoarce e3; - UID, USER ntorc ID-ul, respectiv username-ul utilizatorului ORACLE curent;

- USERENV furnizeaz informaii despre sesiunea curent; - VSIZE(expr) ntoarce numrul de octei ai unei expresii de tip DATE, NUMBER sau VARCHAR2. II. Funciile multiple-row (agregat) pot fi utilizate pentru a returna informaia corespunztoare fiecruia dinte grupurile obinute n urma divizrii liniilor tabelului cu ajutorul clauzei GROUP BY. Ele pot aprea n clauzele SELECT, ORDER BY i HAVING. Server-ul Oracle aplic aceste funcii fiecrui grup de linii i returneaz un singur rezultat pentru fiecare mulime. Dintre funciile grup definite n sistemul Oracle, se pot enumera: AVG, SUM, MAX, MIN, COUNT, STDDEV, VARIANCE etc. Tipurile de date ale argumentelor funciilor grup pot fi CHAR, VARCHAR2, NUMBER sau DATE. Funciile AVG, SUM, STDDEV i VARIANCE opereaz numai asupra valorilor numerice. Funciile MAX i MIN pot opera asupra valorilor numerice, caracter sau dat calendaristic. Toate funciile grup, cu excepia lui COUNT(*), ignor valorile null. COUNT(expresie) returneaz numrul de linii pentru care expresia dat nu are valoarea null. Funcia COUNT returneaz un numr mai mare sau egal cu zero i nu ntoarce niciodat valoarea null. Cnd este utilizat clauza GROUP BY, server-ul sorteaz implicit mulimea rezultat n ordinea cresctoare a valorilor coloanelor dup care se realizeaz gruparea.