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;