Chociaż umieściłeś warunek WHERE, lepszym sposobem byłoby obsłużenie przypadku, gdy rekord nie został znaleziony lub błąd „Nie znaleziono danych”. Powyższy kod napisałbym z zawinięciem SELECT
oświadczenie z własnym BEGIN/EXCEPTION/END
blokować.
Kod może wyglądać mniej więcej tak:
BEGIN
SELECT trim(name)
INTO fullName
FROM (
SELECT n.name
FROM directory dir, store n
WHERE dir.name = n.name
AND dir.STATUS NOT IN ('F','L','M')
ORDER BY n.imp, dir.date
)
WHERE rownum <= 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fullName := NULL;
END;