У меня есть небольшой фрагмент кода, который имеет ввод параметров во внешнем интерфейсе.
Варианты ввода: да, нет и все, что приравнивается к:
yes = TRUE
no = FALSE
all = TRUE & FALSE
Мой код:
SELECT c.ID,
c.rep,
c.cust
FROM mytable c
WHERE '&input' IN (
CASE WHEN 'yes' THEN c.Acc = 'TRUE'
WHEN 'no' THEN c.Acc = 'FALSE'
WHEN 'all' THEN c.Acc IN ('TRUE', 'FALSE')
END)
Но получаю ошибку:
ORA-00920: invalid relational operator


Я думаю, ты хочешь:
SELECT c.ID, c.rep, c.cust
FROM mytable c
WHERE (c.Acc = = &input OR &input = 'all')
Используйте OR
SELECT c.ID,
c.rep,
c.cust
FROM mytable c
WHERE (&input = 'yes' and c.Acc = 'TRUE') OR
(&input = 'no' and c.Acc = 'FALSE') OR
(&input = 'all' and c.Acc IN ('TRUE', 'FALSE'))
c.Acc не может совпадать с вводом, поскольку это разные значения в БД. данные имеют значение ИСТИНА или ЛОЖЬ, входы могут быть да, нет или все