代码之家  ›  专栏  ›  技术社区  ›  StealthRT

ORA-00933 SQL命令未正确结束,但在SQL Developer中运行良好

  •  3
  • StealthRT  · 技术社区  · 7 年前

    我希望有人能找到我的查询的问题所在,因为我看不出其中的错误,而且Oracle SQL Developer似乎可以很好地运行与Java Swing应用程序中的代码相同的查询。

    SQL Developer中的我的查询:

    SELECT 
        ad.ID,ad.Script_Name,ad.Current_Status,
        ad.Issues_found_during_run,ad.Testers,
        ad.Run_Date,ad.Tools,u.fTag,u.role,
        dbms_lob.substr(u.avatar) 
    FROM 
        allData ad 
    INNER JOIN 
        users u 
    ON 
        u.fTag = ad.lastUserWhoUpdated 
    GROUP BY 
        ad.ID,ad.Script_Name,ad.Current_Status,
        ad.Issues_found_during_run,ad.Testers,
        ad.Run_Date,ad.Tools,u.fTag,u.role,
        dbms_lob.substr(u.avatar) 
    ORDER BY 
        ad.ID ASC;
    

    它运行得很好,返回了我所期望的所需记录。

    但是,我的Java Swing应用程序中的同一个查询似乎不喜欢它,因为它给了我以下错误:

    java.sql.SQLSyntaxErrorException:ORA-00933:sql命令未正确结束。

    connectToDB();
    
    String query = 
          "SELECT " + 
            "ad.ID," + 
            "ad.Script_Name," + 
            "ad.Current_Status," + 
            "ad.Issues_found_during_run," + 
            "ad.Testers," + 
            "ad.Run_Date," + 
            "ad.Tools," + 
            "u.fTag," + 
            "u.role," + 
            "dbms_lob.substr(u.avatar) " + 
          "FROM " + 
            "allData ad " + 
          "INNER JOIN " + 
            "users u " + 
          "ON " + 
            "u.fTag = ad.lastUserWhoUpdated " +
          "GROUP BY " + 
            "ad.ID," + 
            "ad.Script_Name," + 
            "ad.Current_Status," + 
            "ad.Issues_found_during_run," + 
            "ad.Testers," + 
            "ad.Run_Date," + 
            "ad.Tools," + 
            "u.fTag," + 
            "u.role," + 
            "dbms_lob.substr(u.avatar) " + 
         "ORDER BY " + 
            "ad.ID;";
    
    ResultSet rs = statement.executeQuery(query);            
    ResultSetMetaData metaData = rs.getMetaData();
    etc..etc..
    

    我对这两个表的结构是:

    SCRIPT_NAME                  VARCHAR2(100 BYTE)
    CURRENT_STATUS               VARCHAR2(50 BYTE)
    ISSUES_FOUND_DURING_RUN      VARCHAR2(150 BYTE)
    TESTERS                      VARCHAR2(30 BYTE)
    RUN_DATE                     DATE
    TOOLS                        VARCHAR2(20 BYTE)
    T_SUITE                      NUMBER(38,0)
    NOE2                         VARCHAR2(5 BYTE)
    NOE3                         VARCHAR2(5 BYTE)
    ID                           NUMBER(38,0)
    LASTUSERWHOUPDATED           NUMBER
    DATELASTMOD                  DATE
    

    FTAG                         NUMBER(38,0)   
    ROLE                         VARCHAR2(15 BYTE)
    AVATAR                       CLOB
    

    1 回复  |  直到 7 年前
        1
  •  5
  •   Jainik    7 年前

    删除后面的分号 ad.ID

    "ORDER BY " + 
        "ad.ID";