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;