繁体   English   中英

SQL异常列无效,java sql语句

[英]SQL exception column invalid, java sql statement

在ORACLE数据库上使用JAVA执行以下SQL语句时遇到问题,它可与DBeaver / SQLdeveloper一起使用,但是在Java进程中出现以下错误。 有任何想法吗 ?

SQL语句:

SELECT MIN(SUBSTR(t1.MONTH,1,4)) || 'A' || 'B' || 'CDE FGR' || ' ' || 'AT'
FROM table1 t1, table2 t2
WHERE t1.toto=t2.toto
AND t1.tata=t2.tata
AND t1.titi=t2.titi
AND t2.tutu = 'IMPACT_EUROPE_FLAG'

Java进程中的SQL错误:

org.springframework.jdbc.BadSqlGrammarException: Attempt to process next row failed; bad SQL grammar

nested exception is java.sql.SQLException: Invalid column name

桌子:

TABLE1  TABLE2 
--------------
MONTH   TOTO
TOTO    TATA
TATA    TITI
TITI    TUTU
TUTU

我的Java进程,只有阅读器和stepbuilder:

 private Step insertBaseToFile() {
        return stepBuilderFactory.get("insertBaseToFile").<GenericRecord, GenericRecord>chunk(100).reader(baseReader())
                .writer(fileWriter()).build();
 }

private JdbcCursorItemReader<GenericRecord> baseReader() {

        JdbcCursorItemReader<GenericRecord> databaseReader = new JdbcCursorItemReader<>();

        String sql = null;

        sql = " SELECT MIN(SUBSTR(t1.MONTH,1,4)) || 'A' || 'B' || 'CDE FGR' || ' ' || 'AT' " +
                    "FROM table1 t1, table2 t2 " +
                    "WHERE t1.toto=t2.toto " +
                    "AND t1.tata=t2.tata " +
                    "AND t1.titi=t2.titi " +
                    "AND t2.tutu = 'IMPACT_EUROPE_FLAG'" 

        databaseReader.setDataSource(dataSource); //dataSource object from my class using JSON conf to get logs in to DB
        databaseReader.setSql(sql);

        return databaseReader;
}

我的猜测是,发生这种情况是因为结果中的列名称将是: MIN(SUBSTR(T1.MONTH,1,4))||'A'||'B'||'CDEFGR'||''||'AT'

尝试:

SELECT MIN( ... ) AS mycolumn

我的错。 一切正常,这是我使用错误的变量名称引起的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM