Pessoal é o seguinte:
Estou desenvolvendo com java/mysql.
Tenho inúmeras procedures que funcionam normalmente.
Criei uma tabela nova, e uma nova procedure para inserir dados nesta tabela.
Aí vai a proc:
DELIMITER $$
DROP PROCEDURE IF EXISTS `spInsereLinhaInvalida` $$
CREATE PROCEDURE `spInsereLinhaInvalida`(
IN _idLote INT,
IN _linha VARCHAR (500),
IN _nrLinhaLote INT
)
BEGIN
INSERT INTO tbLinhasInvalidas (idLote, dsLinhasInvalidas,nrLinhaLote) VALUES (_idLote, _linha, _nrLinhaLote);
END $$
DELIMITER ;
Estou usando JDBC para acessar o banco.
Estou usando CallableStatement, que instancio por meio do Connection.preparaCall();
O erro acontece justamente na chamada prepareCall. unable to retrieve metadata for procedure
Já testei essa proc usando o mysql browser, e funcionou normalmente.
Estou passando os 3 parâmetros de entrada, como a proc requer.
Alguém já viu esse erro?
EDIT: SOLUÇÃO: No java, estava assim: String sql "spInsereLinhaInvalida (?,?,?)";
Deveria ser: String sql "CALL spInsereLinhaInvalida (?,?,?)";
Ou seja, faltou o (maldito) CALL. Perdi 1 hora nisso. :oops: