Двухвариантная замена 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