PL/SQL 匿名块已完成”但未显示结果

Posted

技术标签:

【中文标题】PL/SQL 匿名块已完成”但未显示结果【英文标题】:PL/SQL anonymous block completed" with no result displayed 【发布时间】:2019-11-12 21:05:16 【问题描述】:

当我执行下面的代码时,我收到消息“匿名块已完成”,但没有返回任何结果。谁能帮帮我?

BEGIN
 FOR r IN
 (SELECT DBMS_METADATA.GET_DDL
 (object_type => 'VIEW', name => view_name, schema => USER)
 AS view_text
 FROM USER_VIEWS)
 LOOP
 IF INSTR (r.view_text, 'Project') > 0 THEN
 DBMS_OUTPUT.PUT_LINE (r.view_text);
 END IF;
 END LOOP;
END;

【问题讨论】:

【参考方案1】:

在运行这段代码之前,您必须启用输出。在 SQL*Plus 和 SQL Developer 中,它是通过运行来完成的

set serveroutput on

PL/SQL Developer 必须有类似的东西,要么通过显式运行该语句(如果它受支持),要么通过单击输出窗口中的某处,以便 DBMS_OUTPUT 可以显示结果。

【讨论】:

我刚刚这样做了,但“ON”一词出现了语法错误。我还需要添加什么吗? 该语法错误以粉红色标记,正如我所说,它出现在建议代码的“ON”一词上。 在 PL/SQL Developer 中,您可以通过“输出”选项卡中的复选框启用 dbms_output。但是,它不会报告 '匿名块已完成'(消息是 'Executed in 0.001 seconds')所以不确定你是如何得到它的。【参考方案2】:

我也找到了这个(以防有人需要):

当您明确打开 DBMS_OUTPUT 窗口窗格时,SQL Developer 似乎只输出 DBMS_OUTPUT 文本。

转到(菜单)VIEW -> Dbms_output 以调用窗格。

单击绿色加号为您的连接启用输出,然后运行代码。

【讨论】:

等一下。您用“PL/SQL Developer”标签而不是“SQL Developer”标记了这个问题。前者归 Allround Automations 所有,后者归甲骨文所有。你真正使用的是哪一个? @cesaviso 那么问题实际上是如何在 SQL Developer 中启用 dbms_output?

以上是关于PL/SQL 匿名块已完成”但未显示结果的主要内容,如果未能解决你的问题,请参考以下文章

带有游标“匿名块已完成”的 PL/SQL 过程

PL/SQL 中的第一个程序

PL/SQL语法简介(匿名PL/SQL块)

匿名 pl/sql 块中的声明顺序

匿名 PL/SQL 块检查异常

PL/SQL 匿名过程 + 游标问题