【问题标题】:ORA-00933 SQL command not properly ended but good in SQL DeveloperORA-00933 SQL 命令未正确结束但在 SQL Developer 中运行良好
【发布时间】:2019-07-03 00:54:29
【问题描述】:

我希望有人能找出我的查询有什么问题,因为我看不到其中的错误,而且 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 命令未正确结束。

我的 Java Swing 应用程序代码:

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

那么,我会错过什么?

【问题讨论】:

    标签: java oracle jdbc oracle-sqldeveloper oracle12c


    【解决方案1】:

    删除ad.ID 之后的分号,如下所示。你不需要它

    "ORDER BY " + 
        "ad.ID";
    

    【讨论】:

    • @StealthRT 分号是客户端工具的一部分,而不是 SQL 语言的一部分,它没有语句终止符。
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2010-09-09
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多