В хранимой процедуре (Oracle в моем случае), я хочу добавить некоторые значения в существующую запись. Проблема в том, что как существующее значение, так и добавляемое значение могут быть нулевыми. Я хочу, чтобы результат был равен NULL, когда оба операнда равны нулю. Если только один из них является нулевым, я хочу, чтобы результатом был другой операнд. Если оба значения не равны нулю, я хочу, чтобы результат был "нормальным" добавлением.
Вот что я использую до сих пор:
SELECT column INTO anz_old FROM aTable Where <someKeyCondition>;
IF anz_old IS NULL
THEN
anz_new := panzahl;
ELSE
anz_new := anz_new + NVL (panzahl, 0);
END IF;
UPATE aTabel set column = anz_new Where <someKeyCondition>;
Есть ли более элегантный способ (возможно, полностью в SQL, т.е. только в заявлении об обновлении, за исключением длинного CASE-Statement с в основном той же логикой, что и указанный выше код)?