Oracle 12cr2 PRAGMA 弃用

Oracle 12cr2 PRAGMA DEPRECATE

提问人:XmalevolentX 提问时间:11/4/2019 最后编辑:APCXmalevolentX 更新时间:11/4/2019 访问量:315

问:

我们正在尝试清理我们的PLSQL代码库,因为它分散在不同的模式中,并希望使用该功能来识别使用这些UDF/Procs的区域,以便使用我们集中式模式中的UDF/Procs更新它们。 但是当我重新编译使用已弃用函数的视图时,我没有收到任何关于该视图的警告。PRAGMA DEPRECATE

包中有一个已成功弃用的函数。[Warning] PLW-06019 (13: 5): PLW-06019: entity FunctionName is deprecated

我已启用PLSQL警告。ALTER SESSION SET PLSQL_WARNINGS='ENABLE:(6019,6020,6021,6022)';

    CREATE OR REPLACE PACKAGE schemaName.PackageName
    AS
    FUNCTION FunctionName (p_NumIn NUMBER) RETURN VARCHAR2;
    PRAGMA DEPRECATE(FunctionName);
    END schemaName.PackageName;
    CREATE OR REPLACE FORCE VIEW schemaName.ViewName
    (
        FunctionColumnName
    )
    BEQUEATH DEFINER
    AS
        SELECT DISTINCT 
            schemaName.FunctionName (ColumnNameNumVal)
        FROM TableName
        WHERE
            TableName.ColumnNameInd IS NULL;

我预计当我编译视图时会出现编译错误,表明选择语句中使用的函数已被弃用。没有提供任何错误。

Oracle PLSQL 甲骨文 12C

评论


答:

1赞 APC 11/4/2019 #1

PLSQL_WARNINGS仅适用于 PL/SQL 程序单元。这些在文档中定义为

PL/SQL 匿名块
函数


包正文 过程
触发
器类型
类型正文

唉,该列表不包括视图,因为视图是 SQL 而不是 PL/SQL。我同意,如果将弃用警告传播到视图会很整洁(并且对于由类型构建的列的表也存在类似的空白)。但我怀疑 Oracle 决定更改 SQL 编译器以检查PLSQL_WARNINGS所涉及的工作量大大超过了潜在的好处(编写依赖于用户定义函数的视图的 Oracle 客户百分比?使用弃用编译指示的客户百分比?)。

评论

0赞 XmalevolentX 11/5/2019
您是否知道如何识别 SQL 中使用的已弃用函数?其他一些软件包或功能?