Двухвариантная замена NULL-значения реальным значением

Назначение

Двухвариантная замена неопределенного значения (NULL-значения) реальным значением.

Синтаксис
 
nvl2(<​выражение 1​>, <​выражение 2​>, <​выражение 3​>)

<​выражение 1​>::=<​значимое выражение​>

<​выражение 2​>::=<​значимое выражение​>

<​выражение 3​>::=<​значимое выражение​>

Описание

Функция возвращает значение <​выражения 2​> в случае, если <​выражение 1​> не является NULL-значением, иначе возвращает значение <​выражения 3​>.

Функция эквивалентна конструкции СУБД ЛИНТЕР:

CASE WHEN <​выражение 1​> IS NOT NULL
THEN <​выражение 2​> ELSE <​выражение 3​> END;

Типы данных <​выражения 1​>, <​выражения 2​>, <​выражения 3​> должны быть идентичными или приводимыми. При приведении типов данных по умолчанию (без конструкции CAST…) второй и третий аргументы приводятся к типу данных первого аргумента.

Пример
create or replace procedure nvl_test(in v char(20)) result char(20)
code
  return nvl2(v, "is NOT NULL", "is NULL");
end;

execute nvl_test();
return value = is NULL

execute nvl_test('A');
return value = is NOT NULL