如何在 SQL Developer 中的 PLSQL 错误后抑制脚本显示(禁用命令/代码输出)
Posted
技术标签:
【中文标题】如何在 SQL Developer 中的 PLSQL 错误后抑制脚本显示(禁用命令/代码输出)【英文标题】:How to suppress script display after PLSQL Error in SQL Developer (disable command/code output) 【发布时间】:2016-01-21 16:56:00 【问题描述】:当我运行带有错误的 PLSQL 块时,SQL Developer 在给出错误详细信息之前会重复/复制整个脚本。这是非常可怕的,因为我对于长脚本,每次错误后我都会向下滚动。
我需要找到一种方法来禁止将整个脚本写入脚本控制台。我检查了首选项和帮助,但没有发现任何相关内容。
Error starting at line : 1 in command -
BEGIN
xx;
END**;
Error report -
ORA-06550: line 2, column 5:
PLS-00201: identifier 'XX' must be declared
ORA-06550: line 2, column 5:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
我还可以确认 sqlplus 没有这样做 - 它只显示包含错误的单行。
【问题讨论】:
不知道是否可行,但您始终可以使用DBMS_UTILITY
函数(如FORMAT_CALL_STACK
、FORMAT_ERROR_STACK
和FORMAT_ERROR_BACKTRACE
)捕获异常并仅打印错误消息。跨度>
不幸的是,这仍然对 PLSQL 中的语法没有帮助 - 这是在较长时间的暂停后编写新代码时最常见的情况。将尝试不同的 UI 工具。
【参考方案1】:
我猜,你没有清楚地理解我的评论。 我建议你这样做:
BEGIN
...
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Call stack:');
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_CALL_STACK);
DBMS_OUTPUT.PUT_LINE(CHR(10)||'Error stack:');
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_STACK);
DBMS_OUTPUT.PUT_LINE(CHR(10)||'Error backtrace:');
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END;
/
【讨论】:
这对解决 BEGIN 和 EXCEPTION 之间的 PLSQL 脚本中的语法错误有何帮助? 这是一种解决方法 -How to suppress script display after PLSQL Error in SQL Developer (disable command/code output)
,而这 - I need to find a way to disable writing the whole script into the script console. I checked Preferences and help, but didn't spot anything related.
这不是您想要的吗?
是的,我一直在寻找这个,但捕获异常仅有助于处理异常,而不是捕获 PLSQL 中的语法错误(这是我问这个的主要原因 - PLSQL 的交互式编写)。在问问题之前,我也搜索了所有偏好。似乎这是 SQL 开发人员的缺陷(因为 Sqlplus 不这样做)。最好的解决方法似乎只是语法高亮并在运行脚本之前修复指示的错误。不是很好,但至少有点。
哦,看来我当时误会了你。如果涉及语法错误,我认为在 SQL Developer 中没有任何方法可以更改它。但实际上,打印出整个脚本对我来说从来都不是问题,即使它有 2-3k 行。
那么你的不适阈值一定要高一点 :) 重复整个脚本服务器绝对没有任何目的,除了产生噪音并且使查找实际错误消息更加耗时。 叹息以上是关于如何在 SQL Developer 中的 PLSQL 错误后抑制脚本显示(禁用命令/代码输出)的主要内容,如果未能解决你的问题,请参考以下文章
如何避免 Oracle SQL Developer 中的变量替换