gpt4 book ai didi

java - ORA-00920 无效的关系运算符

转载 作者:行者123 更新时间:2023-12-02 11:34:58 26 4
gpt4 key购买 nike

我创建了一个类 (Execute_Query_Bd_Multiples_Results) 来连接到数据库并在 DB Oracle 中执行查询。

此类 (Execute_Query_Bud_Multiples_Results) 返回 2 个值(int Id_Estrategia1 和 int Id_Estrategia2),这些值将传递给 (Connect) 方法。

在(Connect)方法中有一个名为ls_command的变量,它接收查询值并将查询结果返回到主类(Executar_Query_Bd_Multiplos_Resultados)。

在测试类 (Executar_Query_Bd_Multiplos_Resultados_Test) 中,我进行方法调用 (Connect) 并将两个值传递给方法 (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;
}

}

公共(public)类 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

最佳答案

您应该在 elems 和 , 周围添加 ( ) 进行分隔

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

关于java - ORA-00920 无效的关系运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49009795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com