Dúvida com CallableStatement

Olá Pessoal…

Estou tentando chamar uma stored procedure no meu banco o não estou conseguindo resultado. Minha CallableStatement não recebe nenhum parâmetro. Eles já são setados numa string.

Para localização de contexto, eu crio uma CallableStatement dessa maneira.

Connection c = getcurrentconnection();
String sql = "call PRO_CRIAUSUA('scott','123')";
CallableStatement cs = c.prepareCall(sql);

onde scott e 123 são partes setadas na minha aplicação por concatenação.

depois que eu executo,

cs.execute();

isso me retorna um erro do tipo: Erro no cálculo da instrucao -> PRO_CRIAAUSUA(scott,123).

reparem que o negocio vem sem aspas.

Alguma sugestão?

:slight_smile:

Eu faço assim (procedure do oracle):

CallableStatement stmt = conn.prepareCall("{call procedure(?,?)}");
stmt.setInt(1, 1);
stmt.setString(2, "jose");
stmt.execute();

E nunca tive problemas. Não concatene os parâmetros direto na chamada da procedure.

Pois bemm… eu já estava entendido desse esquema, o problema é o esquema da minha aplicação…

para executar o método que eu passei, ou parte dele, o sql já vem como parâmetro.

acho que vou ter q separar o sql e adicionar os parâmetros.

eu já tinha pensado nisso, mas dá uma preguiça trabalhar com aqueles “matchers e patterns”… hehe

abraço.

Você tem uma classe que executa o sql’s, procedures, etc que recebe o sql que deve ser executado por parâmetro, isso?
Se sim, ao invés de passar o sql, passa o Statement já com os parâmetros setados, se não quiser criar o statement fora da classe que executa, então pode criar uma classe “auxiliar” que tenha o sql e a lista de parâmetros (bem como tipo). Sua classe que executa vai receber esse objeto, criar o Statement a partir dos dados do objeto e executar o sql.
Seila, idéias hehe melhor que mexer com machers e patterns que dai vc vai ficar louco.