Oracle PL / SQL:如何在长包中找到未使用的变量?

前端之家收集整理的这篇文章主要介绍了Oracle PL / SQL:如何在长包中找到未使用的变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请假设您有一个大约200,000行代码的Oracle PL / sql包.

有没有快速方法来检测声明的变量,但没有在包中使用?

提前感谢您的帮助.

编辑(2014年4月7日):我正在使用Oracle 10G.

编辑:我正在寻找一个纯PL / sql解决方案.

解决方法

以下仅适用于11g R2.它看起来像 PL/Scope has become available in 11g R1.

使用PLsql_WARNINGS =’ENABLE:ALL’,您将无法获得有关未使用变量的信息:

sql> !cat test.sql
set serveroutput on

alter 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 errors

exec foo

sql> @test

Session altered.


SP2-0804: Procedure created with compilation warnings

Errors for PROCEDURE FOO:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1      PLW-05018: unit FOO omitted optional AUTHID clause; default
         value DEFINER used

hello 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 warnings

sql> show errors
Errors for PROCEDURE FOO:

LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1      PLW-05018: unit FOO omitted optional AUTHID clause; default
         value DEFINER used

sql> @plsql-unused-variables.sql
Enter value for name: foo
old  10:   where  object_name = upper('&name')
new  10:   where  object_name = upper('foo')
Enter value for type: procedure
old  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相关文章