Самый оригинальный способ присваивания, который мне пока попадался:
select X + sum(nvl(case when Y is not null then Z end, 0))
into X
from dual;
По-моему, прекрасный образчик того, что один мой бывший коллега назвал «консалтерским кодом». Сравниться с ним может разве что decode(1,1,X,X)
.