Oracle: получить запрос, который всегда возвращает ровно одну строку, даже если нет данных для be found

У меня есть такой запрос:

   select data_name
   into v_name
   from data_table
   where data_table.type = v_t_id

Обычно этот запрос должен возвращать ровно одну строку. Когда нет совпадений на v_t_id , программа завершается с ошибкой «Данные не найдены».

Я знаю, что мог бы обработать это в PL / SQL, но мне было интересно, есть способ сделать это только в запросе. В качестве теста я пробовал:

select case
           when subq.data_name is null then
            'UNKNOWN'
           else
            subq.data_name
       end
from (select data_name
       from data_table
       where data_table.type = '53' /*53 does not exist, will result in 0 rows. Need fix this...*/
       ) subq;

... но это, очевидно, не сработает (поскольку subq пустой - это не то же самое, что subq.data_name имеет значение null ). Возможно ли это вообще, или мне просто нужно проверить свое решение PL / SQL?

(oracle 10g)

7
задан OMG Ponies 12 February 2011 в 01:34
поделиться