Даже если это возможно, это не очень хорошая идея. Функции для каждой строки снижают производительность.
В этом случае наилучшим способом является объединение двух эксклюзивных запросов:
SELECT discount_amount
FROM vw_ph_discount_data
WHERE sysdate > start_date
AND end_date IS NULL
UNION ALL
SELECT discount_amount
FROM vw_ph_discount_data
WHERE sysdate > start_date
AND end_date IS NOT NULL
AND sysdate < end_date
(изменено на NULL
с EMPTY
, поскольку, похоже, это то, что вы хотели)
Предполагая, что end_date
проиндексирован, это должно продолжаться, даже если это два запроса. Необходимость дополнительной обработки каждой возвращаемой строки редко является хорошей идеей.
Какие бы методы вы ни выбрали для исследования, сравните их с данными реального мира. Основная директива оптимизации - мера, не угадай.