create or replace function get_number_five
return number
is
begin
dbms_output.put_line('function get_number_five is invoked');
return 5;
end;
Как видим, она просто возвращает число 5, сопровождая свою работу выводом строки в буфер. То есть перед нами пример функции, которая не только возвращает требуемый результат, но и выполняет некоторые действия. Сейчас нам это нужно, чтобы определить происходил ли вызов функции.Попытаемся угадать, что произойдет при следующем вызове:
declare x number; p number; begin p :=5; x := nvl(p,get_number_five); end;