Просто чтобы объяснить, что вы видели, для дальнейшего использования:
select 3*level as X from dual
start with 1
connect by prior X < 15;
ORA-00920: invalid relational operator
Error at Line: 3 Column: 1
Ошибка на самом деле жалуется на ваше предложение start with
, которое должно иметь условие ;1
является просто буквальным значением и не может использоваться как условие (оно не может быть оценено как «истина» или «ложь»).Если мы исправим это так, что теперь это условие:
select 3*level as X from dual
start with 1 = 1
connect by prior X < 15;
ORA-00904: "X": invalid identifier
Error at Line: 3 Column: 18
Теперь проблема в том, что ваше условие connect by
относится к X
, который не является столбцом в исходных данных;к сожалению, вы не можете ссылаться на псевдонимы, определенные в предложении select
.
Обычно вы бы заменили X
на фактическое выражение, например 3*level
- но в этом случае это все равно не будетработать либо потому, что вы не можете ссылаться на псевдостолбец в выражении prior
.
Вместо этого вы можете сделать следующее:
select 3*level as X from dual
start with 1 = 1
connect by level < 15;
Очевидно, start with 1 = 1
является избыточным и может бытьудален;и, таким образом, у вас есть ответ, предложенный user75ponic, который отлично работает.