正如您可能已经了解到的,下面的代码不是真实的 - 但它强调了我的观点。
PROCEDURE Do_Some_Dynamic_Stuff (
sql_ IN VARCHAR2 )
IS
cur_ INTEGER := Dbms_Sql.Open_Cursor;
res_ NUMBER;
BEGIN
Dbms_Sql.Parse (cur_, sql_, dbms_sql.native);
res_ := Dbms_Sql.Execute (cur_);
-- ...
-- > use cursor cur_ in this code to achieve "stuff"
-- > value `res_` never required by the program
-- > end program successfully without errors
-- ...
END Do_Some_Dynamic_Stuff;
编译时,上述过程将产生编译器警告:
Hint: Value assigned to 'res_' never used
。
我知道警告的含义,并且突出显示该问题是有意义的,因为当
DECLARE
(或 IS
)块中定义的变量变得多余/未使用时,它可以帮助整理旧代码。
我在 SO 上看到过类似的问题,但答案建议降低 Oracle 中的警告级别。问题是:
重点是,在上述场景中,
res_
变量是代码编译所必需的,但在 PROCEDURE
的上下文中是不必要的。我只是想要一种方法来抑制警告的此实例中的消息
当然,解决该问题的一种方法是添加一行无意义的代码,例如:
Dbms_Output.Put_Line ('avoid compiler warning: ' || res_);
但这并不是一个非常雄辩的解决方案,而且无论如何它都会阻塞你的调试输出等。所以我只是想知道是否有人对这个小错误熊有一个很好的解决方案。
如果您正在使用 pl/sql Developer,您可能想尝试一下(摘自 PL/SQL Developer 12.0 用户指南):
要抑制警告,您可以在该行后面添加 -- Ignore comment 产生提示。这适用于 Oracle 编译 本章中描述的警告以及 PL/SQL Developer 提示如下 第 20.9 章中描述。您可以在 --Ignore 之后添加其他文本 描述一下情况
请注意,这些注释不能移植到其他 IDE。