Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Functii avansate in Oracel

Oracle


Functii avansate in Oracel

Ce sunt functiile avansate?

Functiile avansate seamana cu functiile simple cu exceptia faptului ca aceste functii trateaza expresii mai complexe si sunt folosite mai rar. Aceste functii sunt pur si simplu un set de instructiuni SQL si PL/SQL care formeaza o unitate logica si efectueaza o anumita sarcina Ati putea, de exemplu, sa aveti o functie avansata care sa creeze o reproducere fonetica a unei variabile de intrare. Pentru informatii suplimentare în legatura cu functiile si cu modul de utilizare a lor, consultati Capitolul 13, "Functii".



Functiile sunt de doua tipuri: primele actioneaza asupra unei singure linii de date, în timp ce celelalte actioneaza asupra unor linii multiple de date. Functiile avansate sunt obiecte Oracle de sine statatoare care rezida în schema dumneavoastra. Ele sunt asemanatoare operatorilor, cu exceptia faptului ca functiile pot primi argumente multiple.

De ce se folosesc functii avansate?

Functiile avansate va permit sa rezolvati simplu probleme si sarcini specifice, în special daca procesarile dumneavoastra implica sarcini repetitive.

Ca si functiile simple, functiile avansate va ofera avantaje în urmatoarele domenii:

Performanta-Performantele serverului cresc deoarece functia este stocata în forma compilata si prin urmare este disponibila pentru a fi executata. 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.

Alocarea memoriei-Prin utilizarea functiilor avansate se îmbunatateste alocarea memoriei deoarece functiile beneficiaza de caracteristicile mediului Oracle de partajare a memoriei. Aceasta înseamna că 22122f520w ; este suficient sa fie încarcata în memorie o singura copie a functiei în vederea executarii ei de mai multi utilizatori.

Integritate-Functiile avansate reprezinta metode unitare de a efectua diverse activitati.

Dezvoltarea aplicatiilor-Timpul de dezvoltare se reduce prin faptul ca programele beneficiaza de un set comun de functii. Aceasta elimina necesitatea de a crea functionalitatea acestora pornind de la zero.

Cum se folosesc functiile avansate

Paragrafele care urmeaza descriu fiecare functie avansata, precum si sintaxa ei generala. Sintaxa generala a functiilor este urmatoarea:

functie (argument1, argument2, ...)

Sunt prezentate pe rând cele doua categorii: functii mono-linie si functii de grup.

Functii caracter avansate

INITCAP

Returneaza sirul de intrare dupa trecerea la majuscula a primei litere a fiecarui cuvânt si a tuturor celorlalte la litere mici. Cuvintele sunt delimitate prin blancuri sau orice caracter nenumeric.

Sintaxa:

initcap(char)

Exemplu:

select initcap('ordine de vânzare') from dual;

Date de iesire:

initcap('ordine de vânzare')

Ordine De Vânzare

INSTR

Returneaza pozitia unui set de caractere în sirul de intrare. Evaluarea sirului de intrare începe din pozitia specificata si continua pâna când sunt gasite toate aparitiile specificate Aceasta functie returneaza numarul de caractere de la punctul de plecare si satisface numarul de aparitii.

Sintaxa:

Instr(sir de intrare,sir de cautare,pozitie începere,numar *"*-aparitii)

Exemplu:

select instr('Sells sea Shells by the Seaside','Se',l,3) ^from dual;

Date de iesire:

INSTR('SellsSeaShellsbytheSeaside', 'Se',1,3)

INSTRB

Returneaza pozitia unui set de caractere în sirul de intrare. Evaluarea sirului de intrare începe din pozitia specificata si continua pâna când sunt gasite toate aparitiile specificate. Aceasta functie returneaza numarul de octeti de la punctul de plecare si satisface numarul de aparitii.

Sintaxa:

instrbtsir de intrare,sir de cautare,pozitie începere,numar *"»-aparitii)

Exemplu:

select instrb('Sells sea Shells by the Seaside','Se',l,3) **from dual;

Date de iesire:

INSTRB('SellsSeaShellsbytheSeaside','Se',1,3)

"' " " ~25

SOUNDEX

Returneaza reprezentarea fonetica a sirului de caractere de intrare. Aceasta functie poate fi folosita pentru a compara doua cuvinte care se scriu diferit însa suna la fel în engleza.

Sintaxa:

soundextsir de caractere)

Exemplu:

select nume from ang

WHERE SOUNDEX(nume) = SOUNDEX('smith');

Date de iesire:

NUME

Smith Smyth

TRANSLATE

Aceasta functie evalueaza caracterele unui sir, apoi verifica daca vreunul dintre aceste caractere se gaseste în sirul de cautare predefinit. Caracterele gasite sunt înlocuite cu caracterele corespunzatoare (din punct de vedere pozitional) din sirul de înlocuire.

Sintaxa:

translate(sir de intrare, sir de cautare, sir de înlocuire)

Exemplu:

select translate('abcdefghi','befi','1234567890') from dual;

Aceasta functie are sirul de intrare abcdefghi, un sir de cautare egal cu befi si un sir de înlocuire egal cu 1 2 3 4 5 6 7 8 9 O

Date de iesire:

TRANSLATE

alcd23gh4

Deoarece literele acdgh nu exista în sirul de cautare, ele nu sunt convertite si îsi pastreaza valorile initiale. Literele befi sunt în sirul de cautare si în consecinta sunt convertite la noua valoare înlocuirile se efectueaza pe criterii pozitionale, deci litera b va fi înlocuita cu l, litera e va fi înlocuita cu 2 si asa mai departe.

Functii numerice avansate

Functiile numerice avansate primesc la intrare date numerice si returneaza valori numerice.

CELL

Returneaza cel mai mic numar întreg care este mai mare sau egal cu valoarea de intrare.

Sintaxa:

cell(valoare)

Exemplu:

select ceil(23.170) from dual;

Date de iesire:

CEIL(23.1^6)

COS

Returneaza cosinusul valorii de intrare.

Sintaxa:

cos(valoare)

Exemplu:

select cos(180*3.14159/180) from dual;

Date de iesire:

COS(180*3.14159/180)

EXP

Returneaza valoarea e ridicata la puterea n. Oracle defineste valoarea e ca fiind 2.718

Sintaxa:

exp(n)

Exemplu:

select exp(5) From dual;

Date de iesire:

EXP(5)

FLOOR

Returneaza cel mai mare numar întreg care este mai mic sau egal cu valoarea de intrare.

Sintaxa:

floor(valoare)

Exemplu:

select floor(23.183) from dual;

Date de iesire:

FLOOR(23.183)

LN

Returneaza logaritmul natural al valorii de intrare.

Sintaxa:

In(valoare)

Exemplu:

select In(3) from dual;

Date de iesire:

LN(3)

LOG

Returneaza logaritmul valorii de intrare în baza specificata.

Sintaxa:

log(baza,valoare)

Exemplu:

select log (10,100) FROM DUAL;

Date de iesire:

LOG(10,100)

MOD

Returneaza restul împartirii unei valori la un numar specificat.

Sintaxa:

mod(deîmpartit,împartitor)

Exemplu:

select mod(10,3) from dual;

Date de iesire:

MOD(10,3) 1

SIGN

Returneaza 1 daca valoarea de intrare este mai mare decât zero, daca valoarea este mai mica decât zero si 0 daca valoarea este zero.

Sintaxa:

sign(valoare)

Exemplu:

select sign(-70) from dual;

Date de iesire:

SIGN(-70)

SIN

Returneaza sinusul valorii de intrare.

Sintaxa:

sin(valoare)

Exemplu:

select sin(30*3.141592653/180) FROM DUAL;

Date de iesire:

SIN(30*3.141592653/180)

SQRT

Returneaza radacina patrata a valorii de intrare.

Sintaxa:

sqrt(valoare)

Exemplu:

select sqrt(16) from dual;

Date de iesire:

SQRT(16)

TAN

Returneaza tangenta valorii de intrare.

Sintaxa:

tan(valoare)

Exemplu:

select tan(135*3.14159265393/180) from dual;

Date de iesire:

TAN(135*3.14159265393/180)

Functii data avansate

Functiile data avansate opereaza cu elemente de intrare de tip date.

NEW_TIME

Converteste ora de la o zona orara specificata la alta. Zonele orare sunt urmatoarele:

AST

Zona Atlantic (Atlantic Standard Time)

CST

Zona centrala (Central Standard Time)

EST

Zona de Est (Eastern Standard Time)

GMT

Greenwich Mean Time

HST

Zona Alaska-Hawaii (Alaska-Hawaii Standard Time)

MST

Zona montana (Mountain Standard Time)

PST

Zona Pacific (Pacific Standard Time)

Sintaxa:

new_time(data-ora, ora zonei curente, ora noii zone)

Exemplu:

select to_char (new_time(sysdate,'MST','PST'),'dd-mon-yy hh:mi:ss') from dual;

Date de iesire:

TO_CHAR(NEW_TIME(SYSDATE,'MST1,'PST'),'DD-MON-YY HH:MI:SS') 13-aug-95 11:28:21

ROUND

Rotunjeste data la unitatile specificate. Unitatile de rotunjire sunt urmatoarele:

ce, sec

Rotunjeste data la cel mai apropiat secol.

year, yy

Rotunjeste data la cel mai apropiat an. Datele cuprinse între l Ianuarie si 30 Iunie sunt rotunjite în jos. Datele cuprinse între l Iulie si Decembrie sunt rotunjite în sus.

ww

Rotunjeste la cea mai apropiata zi de Luni.

d

Rotunjeste la cea mai apropiata zi. Rotunjeste la ziua urmatoare daca este trecut de ora 12 p.m. (amiaza).

dy, day

Rotunjeste la urmatoarea Duminica, considerata prima zi a saptamânii.

Sintaxa:

round(data,unitati de rotunjire)

Exemplu:

select round(tc_date('12-AUG-93'),'year') from dual;

Date de iesire:

ROUND(TO_DATE('12-AUG-93'), 'year')

01-JAN-94

Functii de conversie avansate

Aceste functii convertesc sirurile de intrare de la un tip de date la altul.

CHARTOROWID

Converteste o valoare de tip char sau varchar2 într-o valoare de tip rowid, pe care o returneaza. în general, aceasta functie este folosita la depanarea codului sursa întrucât programul Oracle efectueaza aceasta conversie automat, functia se foloseste rar.

Sintaxa:

chartorowid(char)

Exemplu:

select director_dept from 1st_dept

where rowid = chartorowid('000000000D.0002 . 0002') from dual;

Date de iesire:

DIRECTOR_DEPT Baker

CONVERT

Returneaza o valoare care a fost convertita de la im tip de data la altul. Seturile de caractere sunt urmatoarele:

US 7 ASCII

Setul standard US ASCII, pe 7 biti

WE 8 DEC

Setul Vest-European DEC, pe 8 biti

WE 8 HP

Setul Vest-European HP, pe 8 biti

WE 8 PC

Codul IBM-PC

F7 DEC

Setul DEC de 7 biti pentru Franta

Sintaxa:

convert(valoare,set de caractere final,set de caractere initial)

Exemplu:

select convert( "Thomas', 'us7ascii', 'we8pc850') from dual;

Date de iesire:

CONVERT

Thomas

ROWIDTOCHAR

Converteste o valoare rowid la tipul char

Sintaxa:

rowidtochar(valoare)

Exemplu:

select rowid from ang

where rowidtochar(rowid) like '%smyt%';

Date de iesire:

ROWID 00000034.0003.0003

Alte functii avansate

UID

Returneaza indicativul utilizatorului curent al bazei de date. Aceasta functie nu primeste argumente; uid este o pseudocoloaria a bazei de date, care nu poate fi modificata de utilizator.

Sintaxa:

uid

Exemplu:

select uid from dual;

Date de iesire:

UID

972A8C32

USERENV

Returneaza informatii în legatura cu sesiunea curenta. Argumentele posibile pentru aceasta functie sunt urmatoarele:

Entryid

Returneaza identificatorul intrarii de auditare, daca este disponibil

label

Returneaza eticheta sesiunii dumneavoastra curente

language

Returneaza limba si setul de caractere curent utilizate

sessionid

Returneaza identificatorul sesiunii curente de auditare

terminal

Returneaza identificatorul sistemului de operare pentru terminalul sesiunii curente

Sintaxa:

userenv(argument)

Exemplu:

select userenv('language') from dual;

Date de iesire:

USERENV('LANGUAGE')

7 american_america.us7ascn

V SIZE

Returneaza numarul de octeti ocupati de valoarea de intrare în zona de stocare.

Sintaxa:

vsize(valoare)

Exemplu:

select vsize('ORACLE') f rom dual;

Date de iesire:

VSIZE('ORACLE'}

Rezumat

Functiile avansate sunt rutine predefinite care manipuleaza date. Aceste functii avansate returneaza o valoare care reprezinta fie o descriere a valorii de intrare, fie rezultatul manipularii acesteia.

Functiile avansate vin în ajutorul celor care dezvolta aplicatii prin reducerea timpului necesar pentru dezvoltare, îmbunatatirea performantelor bazei de date si îmbunatatirea integritatii si securitatii datelor.

Functiile avansate se folosesc în instructiuni SQL. Ele pot fi folosite pentru evaluarea sau manipularea fiecarei linii dintr-o interogare sau pentru procesarea unui grup de linii ale rezultatului.


Document Info


Accesari: 1696
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )