У вас есть скомпилированная функция, но вы не вызвали ее. Код в функции будет запускаться только при вызове функции, поэтому правильно, чтобы он не показывал никаких выходных данных во время компиляции.
Ваша функция также должна возвращать значение; на данный момент звонить получит:
select check_status('test') from dual;
ORA-06503: PL/SQL: Function returned without value
ORA-06512: at "MYSCHEMA.CHECK_STATUS", line 4
Yoo
, который показывает вывод, но также и ошибки.
Итак, ваша функция должна что-то возвращать:
create or replace function check_status (p_user_name in varchar2) return number is
begin
DBMS_OUTPUT.PUT_LINE('Yoo');
return 42;
end;
/
Function CHECK_STATUS compiled
select check_status('test') from dual;
CHECK_STATUS('TEST')
--------------------
42
Yoo
Также обратите внимание, что любой, вызывающий функцию, увидит это Yoo
, только если он включил вывод в своем сеансе или клиенте. Поскольку вы не можете контролировать это, вы не должны полагаться на это. Это в основном полезно для отладки.