ORA - 00935: пропущенное выражение

Это мой код:

select max(vhis_data.C0432_SAMPL_VALUE1_R), vhis_data.C0401_aid
from vhis_data, T0401_accounts
where vhis_data.C0401_aid = T0401_accounts.C0401_aid
and (
vhis_data.c0401_aid between 1179 and 1291 or
vhis_data.c0401_aid between 1382 and 1402 or
vhis_data.c0401_aid between 1462 and 1620 or

# and so on until...

vhis_data.c0401_aid between 5450 and 5485 or
vhis_data.c0401_aid between 5503 and 5495 or
)

(эти числа представляют различные точки в системе)

Программа выдает ошибку:

 vhis_data.c0401_aid between 1179 and 1291 or
*
 ERROR at line 5:
ORA-00936: missing expression

Я заметил, что первая часть ошибки ссылается на первую строку в and ( ... ) часть моего кода. Я также заметил, что есть дополнительный or на последней строке моего кода. Я могу вынести это, но это лишнее or единственная причина, по которой весь and (...) часть не работает? Или есть другая причина, по которой мой код не работает?

(Я полагаю, что подвопрос мой, если отсутствует пропущенное выражение, где код перестает работать правильно?)

Например, здесь, пропущенное выражение является потенциально последней строкой (потому что оно ожидает чего-то после "или"). Тем не менее, код даже не проходит через первую строку and (...) часть кода.

Я прочесал сеть для объяснений, связанных с ошибкой ORA-00936: отсутствует выражение, но не нашел ничего достаточно релевантного, чтобы помочь мне в этой конкретной ситуации.

Я приветствую любую критику или совет, который вы можете получить, и заранее благодарю вас за любой вклад, который вы мне дадите!

2 ответа

Вы не должны заканчивать все это с или

 5495 or
)

это делает всю фразу в скобках недействительной - все в ()... так вот почему номер строки помечается вверху.

Может ли это быть дополнительной или единственной причиной того, что вся и (...) часть не работает?

Это причина того, что весь запрос не работает.

SQL-запрос не "выполняется" по порядку, как строка команд. Весь запрос скомпилирован, план построен и план выполнен. По этой причине любые синтаксические ошибки часто показывают, что они указывают на строки, которые не имеют фактической ошибки.

Таким образом, "код" вообще не "выполняется". Компиляция не удалась, поэтому выполнять нечего.

Другие вопросы по тегам