Subinterogari scalare
Subinterogarea scalarã este o subinterogare care intoarce
exact valoarea unei coloane dintr-o inregistrare.
Valoarea unei expresii de subinterogare scalara este valoarea
listei de articole selectate de subinterogare. Dacã subinterogarea
nu intoarcenicio inregistrare valoarea expresiei subinterogarii scalare
este NULL; daca subinterogarea intoarce mai multe inregistrãri serverul
Oracle întoarce o eroare.
In Oracle 9i se pot utiliza subinterogãri scalare
:
- ca parte a unei conditii sau expresii pentru DECODE
sau CASE
- in toate clauzele unei fraze SELECT, cu exceptia clauzei GROUP
BY
- intr-o instructiune UPDATE , in partea stanga a operatorului
in clauza SET sau in clauza WHERE
Totusi, subinterogarile scalare nu constituie expresii valide
in urmatoarele situatii:
- ca valori implicite pentru coloane si ca expresii
hash pentru cluster-e
- in clauza GROUP BY
- in constrangeri CHECK
- in clauze HAVING
- inclauze START WITH si CONNECT BY
Exemple:
SELECT employee_id, last_name,
(CASE
WHEN department_id =
(SELECT department_id
FROM departments
WHERE location_id =1800)
THEN 'Canada'
ELSE 'USA'
END) location
FROM employees;