提问人:cartbeforehorse 提问时间:10/25/2023 最后编辑:MT0cartbeforehorse 更新时间:11/3/2023 访问量:81
PL/SQL - 避免编译器警告:“已分配值,从未使用过”
PL/SQL - Avoid Compiler warning: "value assigned, never used"
问:
正如您可能已经收集到的那样,下面的代码不是真实的 - 但它突出了我的观点。
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_);
但这并不是一个非常有说服力的解决方案,无论如何,它都会阻塞你的调试输出等。所以我只是想知道是否有人可以对这只小虫子有一个很好的解决方案。
答:
3赞
Matthieu
10/26/2023
#1
如果您使用的是 pl/sql developer,您可能想尝试一下(摘自 PL/SQL Developer 12.0 用户指南):
要禁止显示警告,可以在该行后添加 -- 忽略注释 这产生了提示。这适用于 Oracle 编译 本章中描述的警告以及 PL/SQL Developer 提示的警告 在第 20.9 章中描述。您可以在 -- 忽略之后添加其他文本 描述情况
请注意,这些注释不能移植到其他 IDE。
评论
1赞
Boneist
10/26/2023
可以确认这适用于我的 PL/SQL 开发人员。只是为了展示RTFM的力量!哈哈
0赞
cartbeforehorse
10/27/2023
@Boneist 把话从我嘴里拿出来!
1赞
cartbeforehorse
10/27/2023
只是为了补充这个正确答案,我用评论进行了测试,它仍然抑制了警告。所以这个词似乎可以在你评论的任何地方!-- lots of text ignore lots of text
ignore
0赞
Jamie
12/13/2023
这将禁止显示所有警告和错误。尽管我想忽略从未使用过的值提示,但忽略所有内容的风险是不值得的。
评论
SYSTEM
SESSION
dbms_sql.execute
SELECT 1 INTO res_ FROM dual;