Problemas para inserir dados em uma Procedure no JDBC

2 respostas
arthurgon

Olá gente;

Estou tentando inserir dados em uma Procedure (MySql) mas a mensagem que me retorna no
console é de erro ou valor incorreto:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Incorrect number of arguments for PROCEDURE supervisor.ps_P2DAQ013; expected 0, got 10

O código está desse jeito:

public class JornadaDAO extends DAOBase {
	///Atributos estáticos dos Métodos principais///////
	private static String INSERT = null;

public JornadaDAO() {
		this(null);
	}

	public JornadaDAO(Connection connection) {
		super(connection);
		///Inserindo Dados nos Campos da Tabela///////////
		StringBuffer stringBuffer = new StringBuffer();
		if (INSERT == null) {
			stringBuffer.delete(0, stringBuffer.length());
			stringBuffer.append("{ call ps_P2DAQ013(?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }");
			
			INSERT = stringBuffer.toString();

		}
        }

     // ////MÉTODO INSERIR PARA TABELA jornadaVO /////////
	public boolean inserir(JornadaVO jornadaVO) throws SQLException {
		CallableStatement callableStatement = null;
		Connection con = null;
		try {
			con = super.getConnection();
			callableStatement = con.prepareCall(INSERT);
			int index = 1;

			callableStatement.setInt(index++, jornadaVO.getEmpresa());
			callableStatement.setInt(index++, jornadaVO.getFilial());
			callableStatement.setInt(index++, jornadaVO.getCodigoJornada());
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.DOMINGO));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.SEGUNDA));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.TERCA));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.QUARTA));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.QUINTA));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.SEXTA));
			callableStatement.setInt(index++, jornadaVO.getCodigoTurno(JornadaVO.SABADO));
			
			int retorno = callableStatement.executeUpdate();

			if (retorno > 0) {
				return true;
			} else {
				return false;
			}
		} finally {
			close(null, callableStatement, con);
		}

	}
Não consigo achar o erro. A Procedure está desse jeito:
DELIMITER &&
CREATE PROCEDURE ps_P2DAQ013()
BEGIN
     SELECT  cd_empgcb,
             cd_fil,
             cd_jorrpt,
	         cd_turrpt_dom,
	         cd_turrpt_seg,
	         cd_turrpt_ter,
	         cd_turrpt_qua,
	         cd_turrpt_qui,
	         cd_turrpt_sex,
	         cd_turrpt_sab
	   FROM  JOR_RPT 
    ORDER BY cd_empgcb;
END
&&
DELIMITER ;

Se alguem puder me ajudar a entender o erro...agradeço. Os parâmetros eu contei, e parecem corretos.

Obrigado.

2 Respostas

T

A procedure que você criou requer zero parâmetros, mas você está passando 10. Você teria de listar os parâmetros na declaração da procedure, mais ou menos assim: - veja http://dev.mysql.com/doc/refman/4.1/pt/create-procedure.html

create procedure ps_P2DAQ013(a char(20), b int, c char(10) etc.... )

Atenção -

arthurgon

Deu certo.

Valeu!!

Criado 10 de junho de 2008
Ultima resposta 10 de jun. de 2008
Respostas 2
Participantes 2