Ошибка ORA-00933: команда SQL завершилась неправильно | Oracle

#sql #oracle #sql-order-by #offset #sql-limit

#sql #Oracle #sql-order-by #смещение #sql-limit

Вопрос:

Я получаю сообщение об ошибке:

Ошибка ORA-00933: команда SQL завершилась неправильно

Когда я запускаю следующий запрос ORACLE:

 Select "col1", "col2" 
from SCHEMANAME.TABLENAME 
OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY
  

Какие-либо решения?

Комментарии:

1. Вам не хватает двойной кавычки в select . Если это является причиной вашей проблемы, это просто опечатка.

Ответ №1:

Я предполагаю, что вы используете Oracle < 12.2, где fetch предложение недоступно.

Типичный обходной путь использует оконные функции:

 select col1, col2
from (
    select t.*, row_number() over(order by id) rn
    from schemaname.tablename t
) t
where rn between 101 and 200;
  

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

Если вам нужна нестабильная сортировка, которую я бы не рекомендовал, используйте order by null в over() предложении of row_number() .