[英]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.