有没有快速的方法来检测声明的变量,但没有在包中使用?
提前感谢您的帮助.
编辑(2014年4月7日):我正在使用Oracle 10G.
编辑:我正在寻找一个纯PL / sql解决方案.
解决方法 以下仅适用于11g R2.它看起来像 PL/Scope has become available in 11g R1.使用PLsql_WARNINGS =’ENABLE:ALL’,您将无法获得有关未使用变量的信息:
sql> !cat test.sqlset serveroutput onalter session set plsql_warnings = 'ENABLE:ALL';create or replace procedure foo is v_a number; v_b varchar2(10);begin dbms_output.put_line('Hello World!');end;/show errorsexec foosql> @testSession altered.SP2-0804: Procedure created with compilation warningsErrors for PROCEDURE FOO:liNE/Col ERROR-------- -----------------------------------------------------------------1/1 PLW-05018: unit FOO omitted optional AUTHID clause; default value defineR usedHello World!PL/sql procedure successfully completed.sql>
如您所见,唯一报告的警告与未使用的变量无关.而是必须使用PL/Scope.
以下示例源自Oracle 11g – Generating PL/SQL Compiler Warnings (Java style) using PL/Scope:
sql> alter session set plscope_settings = 'IDentifIErs:all';Session altered.sql> alter procedure foo compile;SP2-0805: Procedure altered with compilation warningssql> show errorsErrors for PROCEDURE FOO:liNE/Col ERROR-------- -----------------------------------------------------------------1/1 PLW-05018: unit FOO omitted optional AUTHID clause; default value defineR usedsql> @plsql-unused-variables.sqlEnter value for name: fooold 10: where object_name = upper('&name')new 10: where object_name = upper('foo')Enter value for type: procedureold 11: and object_type = upper('&type')new 11: and object_type = upper('procedure')COMPILER_WARNING--------------------------------------------------------------------------------V_B: variable is declared but never used (line 3)V_A: variable is declared but never used (line 2)sql>
脚本plsql-unused-variables.sql只是上面提到的博客文章的剪切和粘贴.因为我发现它很有用,所以我也在Bitbucket中提供了该脚本.
总结以上是内存溢出为你收集整理的Oracle PL / SQL:如何在长包中找到未使用的变量?全部内容,希望文章能够帮你解决Oracle PL / SQL:如何在长包中找到未使用的变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)