甲骨文 12cr2 杂注弃用
Oracle 12cr2 PRAGMA DEPRECATE
我们正在尝试清理我们的 PLSQL 代码库,因为它分散在许多不同的模式中,并希望使用 PRAGMA DEPRECATE
功能来识别这些 UDF's/Procs 正在使用的区域为了从我们的集中模式中使用 UDF's/Procs 更新它们。
但是当我重新编译一个使用已弃用函数的视图时,我没有收到任何类型的视图警告。
包中有一个函数已成功弃用。
[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;
我预计在编译视图时会出现编译错误,表明选择语句中使用的函数已被弃用。没有提供错误。
PLSQL_WARNINGS 仅适用于 PL/SQL 程序单元。这些是 defined in the documentation 作为
PL/SQL anonymous block
FUNCTION
LIBRARY
PACKAGE
PACKAGE BODY
PROCEDURE
TRIGGER
TYPE
TYPE BODY
该列表不包括视图,唉,因为视图是 SQL 而不是 PL/SQL。我同意,如果将弃用警告传播到视图(并且列由类型构建的表也有类似的缺陷),那将是整洁的。但我怀疑 Oracle 决定更改 SQL 编译器以检查 PLSQL_WARNINGS 所涉及的工作大大超过了潜在的好处(Oracle 客户编写的视图依赖于用户定义函数的百分比?使用的客户的百分比弃用杂注?)。
我们正在尝试清理我们的 PLSQL 代码库,因为它分散在许多不同的模式中,并希望使用 PRAGMA DEPRECATE
功能来识别这些 UDF's/Procs 正在使用的区域为了从我们的集中模式中使用 UDF's/Procs 更新它们。
但是当我重新编译一个使用已弃用函数的视图时,我没有收到任何类型的视图警告。
包中有一个函数已成功弃用。
[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;
我预计在编译视图时会出现编译错误,表明选择语句中使用的函数已被弃用。没有提供错误。
PLSQL_WARNINGS 仅适用于 PL/SQL 程序单元。这些是 defined in the documentation 作为
PL/SQL anonymous block
FUNCTION
LIBRARY
PACKAGE
PACKAGE BODY
PROCEDURE
TRIGGER
TYPE
TYPE BODY
该列表不包括视图,唉,因为视图是 SQL 而不是 PL/SQL。我同意,如果将弃用警告传播到视图(并且列由类型构建的表也有类似的缺陷),那将是整洁的。但我怀疑 Oracle 决定更改 SQL 编译器以检查 PLSQL_WARNINGS 所涉及的工作大大超过了潜在的好处(Oracle 客户编写的视图依赖于用户定义函数的百分比?使用的客户的百分比弃用杂注?)。