【问题标题】:How do I Suppress "PL/SQL procedure successfully completed" message in sqlplus?如何在 sqlplus 中抑制“PL/SQL 过程成功完成”消息?
【发布时间】:2010-09-20 00:20:04
【问题描述】:

有没有一种方法可以在 sqlplus 中将 SERVEROUTPUT 设置为 ON,但以某种方式抑制在完成执行 plsql 过程时自动生成的消息“PL/SQL 过程成功完成”?

【问题讨论】:

    标签: oracle plsql sqlplus


    【解决方案1】:

    使用命令:

    SET FEEDBACK OFF
    

    在运行程序之前。之后您可以再次打开它:

    SET FEEDBACK ON
    

    【讨论】:

    • 显然SET FEEDBACK ON 重新启用它
    • 抱歉这个愚蠢的问题,但你为什么要重新打开它?我的意思是,只有当你想要在同一个脚本中的其他东西上使用它时,对吧?如果您不希望某个脚本的任何 输出,您可以将其关闭,然后忘记它。在其他地方它将默认为ON,对吗?还是将其设置为 OFF 就像一些系统范围的设置之类的?
    • @osullic 您不必这样做,但由于它是默认设置,您可能希望返回到它,以便在手动运行代码时获得有用的反馈。
    【解决方案2】:

    这在 sqlplus 中对我来说效果很好,但我只是注意到“设置反馈关闭”会抑制 Sql Developer 中的错误(至少版本 17.2.0.188)。如果您使用 Sql Developer,请注意以下事项:

    create or replace procedure test_throw_an_error as buzz number; begin dbms_output.put_line('In test_throw_an_error. Now, to infinity!'); buzz:=1/0; end;
    /
    set serveroutput on
    set feedback off
    exec test_throw_an_error;
    exec dbms_output.put_line('Done, with feedback off');
    set feedback on
    exec test_throw_an_error;
    exec dbms_output.put_line('Done, with feedback on');
    

    结果:

    Procedure TEST_THROW_AN_ERROR compiled
    
    In test_throw_an_error. Now, to infinity!
    
    Done, with feedback off
    
    In test_throw_an_error. Now, to infinity!
    
    
    Error starting at line : 11 in command -
    BEGIN test_throw_an_error; END;
    Error report -
    ORA-01476: divisor is equal to zero
    ORA-06512: at "ECTRUNK.TEST_THROW_AN_ERROR", line 1
    ORA-06512: at line 1
    01476. 00000 -  "divisor is equal to zero"
    *Cause:    
    *Action:
    Done, with feedback on
    
    PL/SQL procedure successfully completed.
    

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      相关资源
      最近更新 更多