正如您可能已经收集到的,下面的代码不是真实的-但它突出了我的观点。
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中的警告级别。问题是:
1.我并不总是有机会这样做
1.我不想关闭警告-正如我所说的,我通常喜欢看到消息,因为当一个真正的变量被声明而从不使用时,它有助于保持代码的整洁
关键是在上面的场景中,res_
变量对于允许代码编译是必要的,但在PROCEDURE
的上下文中是不必要的。
当然,解决这个问题的一种方法是添加一行无意义的代码,例如:
Dbms_Output.Put_Line ('avoid compiler warning: ' || res_);
型
但这并不是一个很好的解决方案,而且无论如何,它会阻塞你的调试输出等等。所以我只是想知道是否有人有一个很好的解决方案,这个小错误熊。
1条答案
按热度按时间6yt4nkrj1#
如果你使用的是pl/sql developer,你可能想试试这个(摘自PL/SQL Developer 12.0用户指南):
要隐藏警告,可以在生成提示的行后添加--Ignore注解。这既适用于本章中介绍的Oracle编译警告,也适用于第20.9章中介绍的PL/SQL Developer提示。可以在-- Ignore后添加其他文本以描述这种情况
请注意,这些注解不能移植到其他IDE中。