首页 > 解决方案 > FETCH 抛出异常 java.sql.SQLSyntaxErrorException: ORA-00918: 列定义不明确

问题描述

每当我添加这行代码时,它总是抛出异常

OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;

完整代码:

SELECT 
    EMPLOYEES.EMPLOYEE_ID,
    EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, EMPLOYEES.EMAIL,
    EMPLOYEES.PHONE_NUMBER, EMPLOYEES.HIRE_DATE, EMPLOYEES.JOB_ID,
    EMPLOYEES.DEPARTMENT_ID, EMPLOYEES.MANAGER_ID, EMPLOYEES.SALARY,
    JOBS.JOB_ID, JOBS.JOB_TITLE, DEPARTMENTS.DEPARTMENT_ID,
    DEPARTMENTS.DEPARTMENT_NAME, DEPARTMENTS.MANAGER_ID, M.EMPLOYEE_ID,
    M.FIRST_NAME
    || ' '
    || M.LAST_NAME AS MANAGER_NAME 
FROM 
    EMPLOYEES 
INNER JOIN 
    JOBS ON EMPLOYEES.JOB_ID = JOBS.JOB_ID 
INNER JOIN  
    DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID 
INNER JOIN  
    EMPLOYEES M ON DEPARTMENTS.MANAGER_ID = M.EMPLOYEE_ID 
ORDER BY 
    EMPLOYEES.EMPLOYEE_ID ASC 

我想在我的站点中显示来自多个表的数据,并将其限制为十个输出,但它总是抛出异常。我应该怎么办?我试过添加别名,但没有奏效。

标签: sqloracle

解决方案


您的问题的简单答案是:

根据有关 FETCH 的 Oracle 12c 文档:

如果选择列表包含具有相同名称的列并且您指定了 row_limiting_clause,则会出现 ORA-00918 错误。无论同名列是在同一个表中还是在不同的表中,都会出现此错误。您可以通过为同名列指定唯一列别名来解决此问题。

干杯!!


推荐阅读