PL/SQL - 避免编译器警告:“已分配值,从未使用过”

问题描述 投票:0回答:1

正如您可能已经了解到的,下面的代码不是真实的 - 但它强调了我的观点。

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. 我并不总是有权这样做
  2. 我不想想要关闭警告 - 如前所述,我通常喜欢看到该消息,因为它有助于在声明真正的变量但从未使用时保持干净的代码

重点是,在上述场景中,

res_
变量是代码编译所必需的,但在
PROCEDURE
的上下文中是不必要的。我只是想要一种方法来抑制警告的此实例中的消息

当然,解决该问题的一种方法是添加一行无意义的代码,例如:

Dbms_Output.Put_Line ('avoid compiler warning: ' || res_);

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

oracle plsql compiler-warnings plsqldeveloper
1个回答
0
投票

如果您正在使用 pl/sql Developer,您可能想尝试一下(摘自 PL/SQL Developer 12.0 用户指南):

要抑制警告,您可以在该行后面添加 -- Ignore comment 产生提示。这适用于 Oracle 编译 本章中描述的警告以及 PL/SQL Developer 提示如下 第 20.9 章中描述。您可以在 --Ignore 之后添加其他文本 描述一下情况

请注意,这些注释不能移植到其他 IDE。

© www.soinside.com 2019 - 2024. All rights reserved.