И вычисляется до ИЛИ , поэтому у вас есть неявные дополнительные скобки;эффективно:
UPDATE FINANCE_ORDERS
SET ORDER_STATUS = 'NOT APPROVED EWW'
WHERE
(
ORDER_DATE = '&TIME_1'
AND
((&V5)*(&V6)) < (&V7)
)
OR
((&V5)*(&V6)) - (&V7) < (&V3)
OR
(&V3) < (&V8)
OR
(&V3) > (&V9)
/
Если вы добавите дополнительные скобки самостоятельно, вы можете контролировать порядок или оценку:
UPDATE FINANCE_ORDERS
SET ORDER_STATUS = 'NOT APPROVED EWW'
WHERE
ORDER_DATE = '&TIME_1'
AND
(
((&V5)*(&V6)) < (&V7)
OR
((&V5)*(&V6)) - (&V7) < (&V3)
OR
(&V3) < (&V8)
OR
(&V3) > (&V9)
)
/
Кстати, предполагая, что ORDER_DATE
- это столбец с типом данныхDATE
(и должно быть датой или, возможно, отметкой времени, не строка ), ORDER_DATE = '&TIME_1'
должен действительно иметь явный вызов TO_DATE()
с соответствием маски форматакак вы ожидаете, что пользователь введет его, например, ORDER_DATE = TO_DATE('&TIME_1', 'MM-DD-YYYY HH24:MI:SS')
.В настоящее время вы полагаетесь на неявное преобразование с использованием любых настроек NLS текущего сеанса, которые могут работать для вас, но не для кого-то еще, кто запускает сценарий.
(также см. ACCEPT
для запроса ожидаемого формата ...)