NULL-значения

   

В хранимых процедурах объекты скалярного типа могут иметь значение NULL, интерпретируемое как отсутствие данных. NULL-значение можно присваивать переменной любого типа, а так же сравнивать текущие значения переменных с NULL-значением. Переменные могут получить NULL-значение в результате явного присвоения или как значение по умолчанию (см. подраздел Присвоение значений).

При попытке выполнения любых действий (арифметических, логических и т.д.) с NULL-значениями, кроме операций присвоения и сравнения, происходит исключение NULLDATA.

Для указания NULL-значения используется литерал NULL.

Если исключение NULLDATA не прописано в блоке EXCEPTION, то оно игнорируется.

Примеры
  1. При выполнении эта процедура завершится с исключением:

    create or replace procedure tst_code() result int for debug
    DECLARE
      var v,z int;
      exception NULLDATA for NULLDATA;
    CODE
      v := NULL;
      z:=1+v;
    return z;
    END;
  2. А эта процедура будет выполняться без исключения:

    create or replace procedure tst_code() result int for debug
    DECLARE
      var v,z int;
    CODE
      v := NULL;
      z:=1+v;
      return z;
    END;