oracle PL/SQL -避免错误警告:“赋值,从未使用”

snz8szmq  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(172)

正如您可能已经收集到的,下面的代码不是真实的-但它突出了我的观点。

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_);


但这并不是一个很好的解决方案,而且无论如何,它会阻塞你的调试输出等等。所以我只是想知道是否有人有一个很好的解决方案,这个小错误熊。

6yt4nkrj

6yt4nkrj1#

如果你使用的是pl/sql developer,你可能想试试这个(摘自PL/SQL Developer 12.0用户指南):
要隐藏警告,可以在生成提示的行后添加--Ignore注解。这既适用于本章中介绍的Oracle编译警告,也适用于第20.9章中介绍的PL/SQL Developer提示。可以在-- Ignore后添加其他文本以描述这种情况
请注意,这些注解不能移植到其他IDE中。

相关问题