Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-00905:SQL Developer中运行正常的查询缺少关键字错误_Java_Sql_Oracle_Jdbc - Fatal编程技术网

Java ORA-00905:SQL Developer中运行正常的查询缺少关键字错误

Java ORA-00905:SQL Developer中运行正常的查询缺少关键字错误,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我试图使用JOIN函数从模式中的几个不同表访问信息。在我在表3中添加了完整的外部联接之前,代码一直运行良好。我是甲骨文的新手,所以尽管我一直在阅读甲骨文,但到目前为止,我还不能指出我的错误 这里要注意的有趣的一点是,同一个查询在Oracle SQL Developer上运行得非常好,但是在我用Java(Netbeans IDE)中的其余代码运行它时,抛出了缺少的关键字错误。这两种语言是否有不同的语法要求 这是我的密码: SELECT t2.A1 as temp1, t2.A2 as temp

我试图使用JOIN函数从模式中的几个不同表访问信息。在我在表3中添加了完整的外部联接之前,代码一直运行良好。我是甲骨文的新手,所以尽管我一直在阅读甲骨文,但到目前为止,我还不能指出我的错误

这里要注意的有趣的一点是,同一个查询在Oracle SQL Developer上运行得非常好,但是在我用Java(Netbeans IDE)中的其余代码运行它时,抛出了缺少的关键字错误。这两种语言是否有不同的语法要求

这是我的密码:

SELECT 
t2.A1 as temp1, 
t2.A2 as temp2, 
t2.A3 as temp3, 
t2.A4 as temp4, 
t2.A5 as temp5, 
t2.A6 as temp6, 
t2.A7 as temp7, 
t2.A8 as temp8, 
t3.A9 as temp9,  
t2.A10 as temp10, 
t2.A11 as temp11, 
t2.A12 as temp12, 
t2.A13 as temp13, 
t2.A14 as temp14, 
t2.A15 as temp15,
t2.A16 as temp16, 
t2.A17 as temp17, 
t2.A18 as temp18, 
t2.A19 as temp19, 
t2.A20 as temp20, 
t2.A9 as temp21, 
t2.A21 as temp22, 
t2.A22 as temp23,
t1.deets as deets 
FROM SCHEMA1.TABLE2 t2 
FULL OUTER JOIN 
    SCHEMA1.TABLE3 t3
    ON t2.A1 = t3.A23
LEFT OUTER JOIN 
    (select A24, LISTAGG(A25, ',') WITHIN GROUP (ORDER BY A26) as deets 
        FROM SCHEMA1.NA av 
        WHERE (A26 = 'TYPE1' OR A26 = 'TYPE2') 
        Group by A24) t1 
    ON t1.A24 =  t2.A1 
WHERE 
    (t2.A2 between (TO_CHAR (SYSDATE, 'YYYYMMDD') || '000000') 
        AND (TO_CHAR (SYSDATE+15, 'YYYYMMDD') || '000000') 
    OR t2.A11 between (TO_CHAR (SYSDATE, 'YYYYMMDD') || '000000') 
        AND (TO_CHAR (SYSDATE+15, 'YYYYMMDD') || '000000')) 
    AND TRIM(t2.A27) IS NOT NULL 
    AND t2.A28 = 'SOMESPEC' 
    AND t2.A3 = 'SOMEOTHERSPEC'
order by temp2 desc;
下面是我得到的错误:

[DEBUG: 2018-11-20 08:58:24.426] [query]
java.sql.SQLException: ORA-00905: missing keyword
如有任何建议,将不胜感激

编辑:以下是Java中的查询:

String query = "SELECT "
+ "t2.A1 as temp1, "
+ "t2.A2 as temp2, "
+ "t2.A3 as temp3, "
+ "t2.A4 as temp4, "
+ "t2.A5 as temp5, "
+ "t2.A6 as temp6, "
+ "t2.A7 as temp7, "
+ "t2.A8 as temp8, "
+ "t3.A9 as temp9, " 
+ "t2.A10 as temp10, "
+ "t2.A11 as temp11, "
+ "t2.A12 as temp12, "
+ "t2.A13 as temp13, "
+ "t2.A14 as temp14, "
+ "t2.A15 as temp15, "
+ "t2.A16 as temp16, "
+ "t2.A17 as temp17, "
+ "t2.A18 as temp18, "
+ "t2.A19 as temp19, "
+ "t2.A20 as temp20, "
+ "t2.A9 as temp21, "
+ "t2.A21 as temp22, "
+ "t2.A22 as temp23, "                                                
+ "t1.deets as deets  "
+ "FROM SCHEMA1.TABLE2 t2 "
+ "FULL OUTER JOIN "
    + "SCHEMA1.TABLE3 t3"
    + "ON t2.A1 = t3.A23"
+ "LEFT OUTER JOIN "
        + "(select A24, LISTAGG(A25, ',') WITHIN GROUP (ORDER BY A26) as deets  "
            + "FROM SCHEMA1.NA av  "
            + "WHERE (A26 = 'TYPE1' OR A26 = 'TYPE2')  "
            + "Group by A24) t1  "
        +"ON t1.A24 =  t2.A1 "
+ "WHERE "
+ "(t2.A2 between (TO_CHAR (SYSDATE, 'YYYYMMDD') || '000000')  "
        + "AND (TO_CHAR (SYSDATE+15, 'YYYYMMDD') || '000000') "
    + "OR t2.A11 between (TO_CHAR (SYSDATE, 'YYYYMMDD') || '000000') "
        + "AND (TO_CHAR (SYSDATE+15, 'YYYYMMDD') || '000000')) "
     +"AND "
        + "TRIM(t2.A27) IS NOT NULL  "
     + "AND t2.A28 = 'SOMESPEC' "
     + "AND t2.A3 = 'SOMEOTHERSPEC'"
+ "order by temp2 desc";

将尾随空格添加到行中

+ "SCHEMA1.TABLE3 t3"
+ "ON t2.A1 = t3.A23"

这在java代码中看起来如何?单引号是否正确转义?在调试过程中,将字符串分配给查询变量后,在即将对oracle实例运行它之前,请检查变量中的字符串是否正确。例如,在t2.A1=t3.A23上的
“之后缺少whitspace”
和其他一些地方。@一匹没有名字的马谢谢你的捕获!我纠正了所有的空白,现在一切正常