Oi pessoal.
Estou tentando chamar uma procedure onde passo dois números e o retorno é a soma destes valores.
O problema é que não estou conseguindo voltar com o @resultado do banco pelo resultSet dá erro: java.sql.SQLException: Can’t set IN parameter for return value of stored function call.
O que ficou faltando na linha 26 cs.setInt(“valor_um”, 1);?[code]create database teste_conexao;
use teste_conexao;
create table teste (
id integer unsigned not null auto_increment,
valor_um integer,
valor_dois integer,
constraint pk_id primary key (id)
);
delimiter <<
create procedure sp_soma(valor_um integer, valor_dois integer)
begin
set @resultado = valor_um + valor_dois;
select @resultado as msg;
end; <<[/code][code]package dao;
import conexao.ConnectionFactory;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TesteDAO {
private final Connection connection;
public TesteDAO() {
connection = new ConnectionFactory().getConnection();
}
public void soma() {
ResultSet rs;
CallableStatement cs;
try {
cs = connection.prepareCall("{? = call sp_soma(?,?)}");
// setando parâmetros
cs.setInt("valor_um", 1);
cs.setInt("valor_dois", 2);
// registrando o parâmetro da variável de retorno
cs.registerOutParameter(1, Types.INTEGER);
// executando a procedure
cs.execute();
// mostrando o @resultado
rs = (ResultSet) cs.getObject(1);
while (rs.next()){
System.out.println(rs.getInt(1));
}
rs.close();
cs.close();
} catch (SQLException ex) {
Logger.getLogger(TesteDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}[/code]