Oracle 12cr2 PRAGMA DEPRECATE - PullRequest
       88

Oracle 12cr2 PRAGMA DEPRECATE

1 голос
/ 04 ноября 2019

Мы пытаемся очистить нашу кодовую базу PLSQL, поскольку она разбросана по разным схемам, и хотим использовать функциональность PRAGMA DEPRECATE для определения областей, в которых эти UDF / Procs используются для обновления их с помощью UDF / 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;

Я ожидал, когда я скомпилировал представление, чтобы была ошибка компиляции, указывающая, что функция, используемая в операторе выбора, устарела. Ошибка не предоставлена.

1 Ответ

1 голос
/ 04 ноября 2019

PLSQL_WARNINGS применяется только к программным модулям PL / SQL. Они определены в документации как

PL / SQL анонимный блок
ФУНКЦИЯ
БИБЛИОТЕКА
ПАКЕТ
ТЕЛО ПАКЕТА
ПРОЦЕДУРА
TRIGGER
TYPE
TYPE BODY

В список, увы, не входят представления, поскольку представления являются SQL, а не PL / SQL. Я согласен, что было бы неплохо, если бы предупреждения об устаревании были распространены на представления (и есть аналогичная лакуна для таблиц со столбцами, построенными из типов). Но я подозреваю, что Oracle решила, что усилия по изменению компилятора SQL для проверки PLSQL_WARNINGS значительно перевешивают потенциальную выгоду (процент клиентов Oracle, пишущих представления, которые зависят от пользовательских функций, - процент тех клиентов, которые используют прагму устаревания?).

...