Инициализация внутри определения функции парараметра с типом IN

Часто вижу в примерах присвоение параметру типом IN:

Create or replace function atr (sode in number, code in number :=1000) return varchar2

Зачем нужно присваивать заранее известное значение в функциях?

Ниже идёт оператор ветвления:

If code in  (1000,2000)

Соответвенно, зачем проверять известное присвоенное значение на соответствие?


Ответы (1 шт):

Автор решения: 0xdb

Значение по-умолчанию в функции используется:

  • Для написания более лаконичного кода. Если функция 100 раз вызывается так:

    atr (1)
    

    и, например, есть только один специальный случай с отличаюшимся значением:

    atr (1, code=>3000)
    
  • Для "безболезненного" изменения/расширения функции. Например, добавив новый параметр code in number :=1000, существуюший код в местах вызова функции останется без изменений. Без значения по-умолчанию для нового параметра, надо будет добавить его всюду, где функция вызывaется (десятки, а то и сотни изменений).

    create or replace function atr (sode in number) return varchar2 is
    begin
        return 'старое значение для '||sode; 
    end;
    /
    

    Так было, а через пару лет решили изменить, добавив новый параметр:

    create or replace function atr (sode in number, code in number:=1000) return varchar2 is
    begin
        return case 
            when code != 1000 then 
                 'значение для '||sode||' с учетом code '||code 
            else 'старое значение для '||sode end;
    end;
    /
    select atr (99) result from dual
    /
    RESULT
    --------------------------------
    старое значение для 99
    
→ Ссылка