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 匿名块已完成”但未显示结果的主要内容,如果未能解决你的问题,请参考以下文章