С функцией, которую вы написали, вы не можете - она возвращает NUMBER
, а желаемый результат - строка (VARCHAR2
).
Существует способ - написать обработчик исключения, которыйбудет выполняться, когда select
, который вы написали, ничего не вернет, так как это вызовет NO_DATA_FOUND
, поэтому:
begin
select ...
exception
when no_data_found then
raise_application_error(-20000, 'The id asked is not present in the table');
end;
Это приведет к остановке вашей программы (возникает ошибка, верно?)поэтому - если вы хотите двигаться дальше, либо
- измените тип возвращаемых данных, либо
- переключитесь на процедуру, которая будет иметь параметр
OUT
(или два - один для идентификатора,другое для возможного сообщения об ошибке). Недостаток (процедуры) в том, что вы не можете использовать его в SELECT
инструкциях, но вам понадобится фрагмент кода PL / SQL.