【发布时间】:2019-02-11 12:29:10
【问题描述】:
我有一个 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;
那么结果就OK了,所以返回值是正确的。
在返回值之前,“A”值被正确打印到 DBMS_OUTPUT。
Oracle 版本是 12c。 我也在 Oracle 11g 中进行了测试,它可以工作,所以它似乎只是 Oracle 12c 的问题。
任何想法为什么会发生这种情况以及如何使用 select 语句打印该值?
【问题讨论】:
-
您确定在 12c 环境中调用该函数时启用了 SERVEROUTPUT 吗?
标签: sql oracle plsql oracle12c