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;