Sunteți pe pagina 1din 38

Saptamana 5

Sections 1, 2
Database programming
Tabelul DUAL
Se foloseste atunci cand avem
de efectuat calcule care nu sunt
legate de un tabel al bazei de date
Are o singura coloana numita
DUMMY si o singura linie cu
valoarea X
Exista 5 tipuri de functii
pe o singura linie
(Single-row functions)

Functiile single-
row pot fi utilizate
in clauzele
SELECT,
WHERE si
ORDER BY
Functiile pt siruri de caractere
Exemple de utilizare a functiilor de manipulare a ortografiei
sirurilor de caractere
Functii character manipulation
Functia TRIM
Extrage caracterele specificate de la inceputul si/sau sfarsitul unui
sir. Implicit este BOTH (extrage si de la inceput si de la sfarsit).
TRIM(LEADING/TRAILING/BOTH ‘caracters to be trimmed’ FROM string to trim)
?

Care este rezultatul


instructiunii urmatoare:
Aplicatii cu functii caracter

1. Sa se afiseze numele propriu cu majuscule


2. Sa se afiseze sirul Oracle$$$Internet$$$Academy
Functii numerice
Se aplica pentru valori numerice si returneaza valori numerice
Exemple cu functiile numerice aplicate pentru numere
ROUND
ROUND(45.926)=46 (daca numarul de zecimale nu este specificat,
rotunjirea se va face la 0 zecimale)
ROUND(45.926, 2)=45.93
ROUND(45.926, -1)=50
ROUND(30695.348, -2)=30700
TRUNC
TRUNC(45.926, 2)=45.92
TRUNC(45.926, 0)=45
TRUNC(45.926)=45 (daca numarul de zecimale nu este specificat,
rotunjirea se va face la 0 zecimale)
MOD
MOD(16, 3)=1
Datele calendaristice in Oracle
Formatul implicit de data calendaristica este DD-MON-RR adica 02-FEB-07. Acest
format se utilizeaza pt introducerea si afisarea datelor calendaristice.
Pentru a stoca date calendaristice se foloseste tipul de date DATE.
Data si ora curenta se obtin cu functia SYSDATE.
Deoarece datele calendaristice se stocheaza in format numeric, se pot face operatii
aritmetice cu datele calendaristice.

SELECT SYSDATE
FROM DUAL
Functiile single-row pentru date calendaristice
Functiile numerice ROUND si TRUNC aplicate datelor
calendaristice

Aceste
Acestedate
dates-au
s-auobtinut
obtinutcu
cu
data
datasistemului
sistemului21-MAR-07!
21-MAR-07!

ROUND( SYSDATE, ’YEAR’)=01-JAN-07


ROUND( SYSDATE, ’MONTH’)=01-APR-07

TRUNC( SYSDATE, ’YEAR’)=01-JAN-07


ROUND( SYSDATE, ’MONTH’)=01-MAR-07
Exemple cu functiile pentru date calendaristice

SELECT last_name, MONTHS_BETWEEN(SYSDATE, hire_date)


FROM employees

SELECT last_name, ADD_MONTHS(hire_date,6)


FROM employees

LAST_DAY(’03-MAR-07’)=31-MAR-07
NEXT_DAY(’13-MAR-07’,’SUNDAY’)=18-MAR-07
Exemplu
Tipuri de date Oracle
Diferenta
Diferentadintre
dintreVARCHAR2
VARCHAR2sisi
CHAR:
CHAR:
Pentru
PentruCHAR
CHARse serezerva
rezervaautomat
automat
un numar de pozitii specificat,
un numar de pozitii specificat,
chiar
chiardaca
dacavaloarea
valoareastocata
stocatanunu
foloseste
foloseste toate pozitiile, decieste
toate pozitiile, deci este
mai avantajoasa folosirea tipului
mai avantajoasa folosirea tipului
VARCHAR2,
VARCHAR2,carecarevava. .
Functii de conversie intre tipuri de date
Conversia de la data la sir de caractere
Tipuri de formate de afisare
Exemplu cu functia TO_CHAR

Parametrul
Parametrulfm fm
are
arerolul
rolulde
deaa
elimina
elimina0-urile
0-urile
sisispatiile
spatiiledin
din
afisare.
afisare.
Conversia
numerelor la siruri
de caractere

Elementele de
format
disponibile
Exemple de conversie a numerelor la siruri de caractere
Conversia sirurilor de caractere la numere

TO_NUMBER(character string, ‘format model’)

Sirul de caractere trebuie sa fie in formatul specificat in functie.


Formatul poate lipsi, caz in care sirul de caractere trebuie sa fie in
formatul standard numeric.
Conversia caracterelor la data calendaristica

Formatul
Formatulspecificat
specificatin
incomanda,
comanda,spune
spune
serverului
serveruluicum
cumarata
aratasirul
sirulde
decaractere
caracterecare
carese
se
va converti.
va converti.
Daca
Dacaformatul
formatullipseste
lipsesteatunci
atuncisirul
sirulde
de
caractere
caracteretrebuie
trebuiesasafie
fiein
informatul
formatulstandard
standard
pentru date calendaristice.
pentru date calendaristice.
Formatele pentru an RR si YY

retine

Format YY
sau YYYY –
acelasi secol cu
anul curent

Tabelul ilustreaza
formatul RR sau
RRRR
Se
Sereturneaza
returneaza
angajatii
angajatiicare
cares-
s-
au angajat pana
au angajat pana
in
in1990
1990

Se
Sereturneaza
returneaza
angajatii
angajatiicare
cares-
s-
au angajat pana
au angajat pana
in
in2090.
2090.
Functii generale care tin de utilizarea valorilor NULL

Functia NVL
Converteste o valoare NULL la o data, caracter sau numar.
Coloana care contine NULL si valoarea cu care se inlocuieste trebuie sa
aiba acelasi tip de date.
Pentru ca atunci cand se efectueaza calcule aritmetice in care este
implicat un NULL, rezultatul este tot NULL, NVL este utilizata pentru a
schimba valorile NULL in 0, inainte de efectuarea calculelor.
Exemple NVL

NVL(commission_pct, 0)
NVL(hire_date, ’01-JAN-07’)

SELECT last_name, salary, NVL(commission_pct, 0), Ce se afiseaza?


salary*12+salary*12*NVL(commission_pct, 0) AN_SAL
FROM employees
Functia NVL2

SELECT last_name, salary, commission_pct, NVL2(commission_pct, ‘SAL+COM’, ‘SAL’)


INCOME
FROM employees
Ce se afiseaza?
Functia NULLIF

Functia NULLIF compara doua expresii, daca sunt egale returneaza


NULL, altfel returneaza prima expresie

SELECT first_name, length(first_name) “expr1”, last_name, length(last_name)


“expr2”, NULLIF(length(first_name), length(last_name)) RESULT
FROM employees
Functia COALESCE

COALESCE este o extensie a functiei NVL, numai ca COALESCE ia


mai multe valori
COALESCE returneaza prima expresie nenula din sir

Exista angajati fara salariu sau comision?


Expresii conditionale

Implementeaza instructiunea conditionala IF-THEN-ELSE

1. CASE – specifica sintaxei ANSI SQL


2. DECODE –specifica sintaxei Oracle
DECODE
DECODE
functioneaza
functioneazanumai
numai
in
inbaze
bazede
dedate
date
Oracle.
Oracle.
Aplicatii

Utilizand expresiile
conditionale, sa se afiseze
pentru fiecare angajat,
salariul in urma unei mariri,
stiind ca daca angajatul are
job_id, IT_PROG marirea Rezolvati!
va fi de 10%, daca job_id
este ST_CLERK, marirea
va fi de 15% , daca job_id
este SA_REP, marirea va fi
de 20%, iar pentru ceilalti
angajati nu va fi o marire.
Raspuns

S-ar putea să vă placă și