错误ORA-00933:SQL命令未正确结束|甲骨文

问题描述

我遇到了错误

错误ORA-00933:sql命令未正确结束

当我运行以下ORACLE查询时:

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

解决方案吗?

解决方法

我的猜测是您正在运行Oracle 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的{​​{1}}子句中使用over()