dbms_output.put_line 在函数内部不起作用

Tom*_*scu 0 sql oracle plsql

我希望以下代码在返回 1 之前打印“abc”。

即使我跑了set serveroutput on,它仍然没有打印任何东西。

如果它不是一个函数,而是一个过程,它就会起作用。

有人可以向我解释我做错了什么吗?

谢谢。

CREATE OR REPLACE FUNCTION test (
    code NUMBER
) RETURN NUMBER
    IS
BEGIN
    dbms_output.put_line('abc');
    RETURN 1;
END;

SELECT
    test(30)
FROM
    dual;
Run Code Online (Sandbox Code Playgroud)

mik*_*utu 8

如果您使用的是 SQL Developer,则应该添加

设置服务器输出

在调用函数之前。

然后,使用 F5(运行脚本)而不是 F9(运行语句)执行函数。这两种执行句子的模式的区别在于显示结果的模式。F5 将结果显示为 PLSQL 代码 F9 将结果显示为 SQL 代码。这样,您将只看到 SQL 的结果。

这是使用 F5 模式的输出:

测试(30)

     1
Run Code Online (Sandbox Code Playgroud)

美国广播公司

否则,您应该将 select 语句包含到 PL_SQL 匿名块中。