代码之家  ›  专栏  ›  技术社区  ›  Logan Wlv

SQL异常列无效,java SQL语句

  •  0
  • Logan Wlv  · 技术社区  · 6 年前

    在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进程,只有reader和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;
    }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   eaolson    6 年前

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

    尝试:

    SELECT MIN( ... ) AS mycolumn
    
        2
  •  0
  •   Logan Wlv    6 年前

    我的错。 一切都很好,这是我使用错误变量名称的错误。