Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Onde está meu caractere inválido (ORA-00911)


Se você usar a string literal exatamente como nos mostrou, o problema é o ; personagem no final. Você não pode incluir isso na string de consulta nas chamadas JDBC.

Como você está inserindo apenas uma única linha, um INSERT normal deve ficar bem mesmo ao inserir várias linhas. Usar uma instrução em lote é provavelmente mais eficiente. Não há necessidade de INSERT ALL . Além disso, você não precisa do clob temporário e tudo isso. Você pode simplificar seu método para algo assim (supondo que eu tenha os parâmetros corretos):
String query1 = "select substr(to_char(max_data),1,4) as year, " + 
  "substr(to_char(max_data),5,6) as month, max_data " +
  "from dss_fin_user.acq_dashboard_src_load_success " + 
  "where source = 'CHQ PeopleSoft FS'";

String query2 = ".....";

String sql = "insert into domo_queries (clob_column) values (?)";
PreparedStatement pstmt = con.prepareStatement(sql);
StringReader reader = new StringReader(query1);
pstmt.setCharacterStream(1, reader, query1.length());
pstmt.addBatch();

reader = new StringReader(query2);
pstmt.setCharacterStream(1, reader, query2.length());
pstmt.addBatch();

pstmt.executeBatch();   
con.commit();