ORA-00920无效的关系操作员



我创建了一个类(execute_query_bd_multiples_results(,以连接到db并在db oracle中执行查询。

此类(execute_query_bud_multiples_results(返回2个值(int id_estrategia1和int id_estrategia2(,这些值传递给(connect(方法。

在(连接(方法中,有一个称为LS_Command的变量,该变量接收查询值并将查询结果返回到主类(executar_query_bd_multiplos_resultados(。

在测试类中(executar_query_bd_multiplos_resultados_test(我进行方法调用(连接(,然后将两个值传递给方法(319,179(,然后在屏幕上打印。Eclipse控制台显示以下错误消息:ORA-00920无效的关系操作员。我不知道为什么此错误消息。以下是类代码。

public class Executar_Query_Bd_Multiplos_Resultados {
//Variáveis de BD
Connection conOracle = null;
Statement stmtOracle = null;
ResultSet rsetOracle = null;
public String Conectar(int Id_Estrategia1, int Id_Estrategia2) {
    String retorno = "#;-1;@";
    Boolean lb_continuar = true;
    //StringBuilder ls_comando = new StringBuilder();
    String ls_comando = new String();
    try {
        System.out.println("Conectando ao banco de dados Oracle...");
        String url = "";
        try {
            //conectando aos bancos de dados
            Class.forName("oracle.jdbc.driver.OracleDriver");
            url = "jdbc:oracle:thin:@10.5.12.116:1521:desenv01";
            DriverManager.setLoginTimeout(10);
            conOracle = (Connection) DriverManager.getConnection(url, "bkofficeadm", "bkofficeadmdesenv01");
        } catch (SQLException e) {
            System.out.println("falha SQL >> " + e.getMessage());
        } catch (Exception e) {
            //System.out.println("falha geral >> " + e.getMessage());
            e.printStackTrace();
            lb_continuar = false;
        }
        //String teste = "'BKO - Rep Conectividade'";
        if (lb_continuar) {
            System.err.println("Preparando comando...");
            System.out.println("");
            ls_comando = "SELECT  DS_ESTRATEGIA, ID_ESTRATEGIA"+
                                  " FROM TB_BKOFFICE_ESTRATEGIA"+
                                  " WHERE ID_ESTRATEGIA  IN" + Id_Estrategia1+"" +Id_Estrategia2+"";    
            System.out.println(ls_comando);
            stmtOracle = conOracle.createStatement();
            stmtOracle.setQueryTimeout(10);
            rsetOracle = stmtOracle.executeQuery(ls_comando.replaceAll("n", " ").trim());
            if(rsetOracle.next()) {
                retorno = rsetOracle.getString(1);
            }              
            rsetOracle.close();
            stmtOracle.close();             
            /*
            Para comandos de Insert, Delete, ou Update
            --------------------------------------------------------
            stmtOracle = conOracle.createStatement();
            stmtOracle.setQueryTimeout(10);
            stmtOracle.execute(variavel_comando.toString());
            conOracle.commit();
            stmtOracle.close();
            */
        } 
    } catch (Exception ex) {
        System.out.println("Erro - " + ex.getMessage());
    } finally {
        try {
            if (rsetOracle != null) {
                rsetOracle.close();
            }
        } catch (Exception e) {
            System.out.println("Erro ao fechar rset - " + e.getMessage());
        }
        try {
            if (stmtOracle != null) {
                stmtOracle.close();
            }
        } catch (Exception e) {
            System.out.println("Erro ao fechar stmt - " + e.getMessage());
        }
        try {
            if (conOracle != null && !conOracle.isClosed()) {
                conOracle.close();
            }
            if (conOracle != null && !conOracle.isClosed()) {
                conOracle.close();
            }
        } catch (Exception e) {
            System.out.println("Erro ao fechar con  - " + e.getMessage());
        }
    }
    return retorno;
}

}

公共类executar_query_bd_multiplos_resultados_test {

@Before
public void setUp() throws Exception {
    Executar_Query_Bd_Multiplos_Resultados qr_2 = new Executar_Query_Bd_Multiplos_Resultados();
    String codEstrategias = qr_2.Conectar(319, 179);
    System.out.println("Estratégias: " + codEstrategias);
}
@After
public void tearDown() throws Exception {
}
@Test
public void test() {
}

}

erro -ora -00920

您应该在elem中添加((,并且要分开

"SELECT  DS_ESTRATEGIA, ID_ESTRATEGIA" +
" FROM TB_BKOFFICE_ESTRATEGIA" +
" WHERE ID_ESTRATEGIA IN (" + Id_Estrategia1 + ", " + Id_Estrategia2 + ")";

最新更新