繁体   English   中英

没有“ PL / SQL过程已成功完成”的SQL Developer DBMS_OUTPUT。

[英]SQL Developer DBMS_OUTPUT without 'PL/SQL procedure successfully completed.'

在SQL Developer中,当运行某些PL / SQL时,如果过程完成,则消息“ PL / SQL过程成功完成”。 返回。

如果由于某种原因无法通过DBMS_OUTPUT.PUT_LINE无法完成该操作,则运行的PL / SQL可能会向用户返回错误消息,但是,用户还会看到“ PL / SQL过程已成功完成”。 (尤其是在“脚本输出”窗口足够小以至于DBMS_OUTPUT不可见的情况下)。

有什么方法可以让DBMS_OUTPUT返回它应该返回的内容,同时还可以使脚本不返回“成功完成PL / SQL过程”。

如果没有,我可能不知道SQL Developer中是否有任何替代方法可以向用户提供即时的个性化反馈?

declare 

    testex exception;

begin

    if 1=1 then 
        raise testex;
    end if;

exception when testex then

    dbms_output.put_line('Error msg');

end;

下面的代码对我有效。 您是否尝试过像下面那样运行代码?

在此处输入图片说明

从网站复制的文本,以解释SET FEEDBACK OFF命令。

源链接: https : //docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm

SET FEED [BACK] {6 | n | 开| OFF}-当脚本选择至少n条记录时,显示脚本返回的记录数。

ON或OFF打开或关闭此显示。 打开反馈会将n设置为1。将反馈设置为零等同于将其关闭。

SET FEEDBACK OFF还可以关闭在SQL或PL / SQL语句成功后显示的语句确认消息,例如“表已创建”和“ PL / SQL过程已成功完成”。

在错误处理程序中添加RAISE语句以重新引发异常,以便任何外部处理程序都可以处理该异常:

declare 

    testex exception;

begin

    if 1=1 then 
        raise testex;
    end if;

exception when testex then

    dbms_output.put_line('Error msg');

    RAISE;  -- re-raise the exception to an outer handler

end;

祝你好运。

您已经对它进行了明确编码,以在出现testex异常时成功完成。 代码说:如果发生这种情况,则打印一条消息并结束。 如果您希望它实际失败,则需要引发异常。

我只会用这样的东西:

begin
    if 1=1 then 
        raise_application_error(-20000, 'Bananas are not available on a Tuesday');
    end if;
end;
/

begin
*
ERROR at line 1:
ORA-20000: Bananas are not available on a Tuesday
ORA-06512: at line 3

这将导致实际的错误,而不是仅仅打印出碰巧谈论错误的消息,从而使您可以控制部署和构建脚本等。

它还将回滚该块中所有未提交的事务,而您当前的方法不会这样做,并且将显示实际的行号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM