У меня есть функция Oracle:
CREATE OR REPLACE FUNCTION "MYFUNC"
RETURN VARCHAR2
AS
lv_result VARCHAR2(50);
BEGIN
SELECT 'A' INTO lv_result FROM DUAL;
DBMS_OUTPUT.PUT_LINE(lv_result);
RETURN lv_result;
END;
Эта функция просто возвращает значение 'A'.
Если я вызываю функцию:
SELECT MYFUNC() FROM DUAL;
Этоне показывает никакого значения, только пустое.
Если я проверяю значение:
SELECT
CASE
WHEN
MYFUNC() = 'A' THEN
'OK' ELSE 'NO'
END AS RES
FROM DUAL;
, тогда результат в порядке, поэтому значение возвращается правильно.
Перед возвратомзначение, значение 'A' правильно выводится в DBMS_OUTPUT.
Версия Oracle - 12c.Я также тестировал в Oracle 11g, и он работает, так что, похоже, это просто проблема Oracle 12c.
Есть идеи, почему это происходит, и как вывести это значение с помощью оператора select?