Erro Procedure MySQL

To com um problema na minha procedure quando executo ela no Workbench ela funciona e quando executo no java ela executa, mas não modifica os dados e nao mostra erro algum

Procedure

DELIMITER $$
drop procedure if exists `Projeto_TCC`.`alterarCliente` $$
CREATE PROCEDURE `Projeto_TCC`.`alterarCliente` (
  in C_IdTB_Cliente INT,
  in C_Cliente_Nome VARCHAR(64),
  in C_Cliente_Telefone VARCHAR(15),
  in C_Cliente_Endereco VARCHAR(64),
  in C_Cliente_Numero INT,
  in C_Cliente_Complemento VARCHAR(32),
  in C_Cliente_Bairro VARCHAR(64),
  in C_Cliente_Cidade VARCHAR(64),
  in C_Cliente_Estado VARCHAR(2),
  in C_Cliente_CEP VARCHAR(10),
  in C_Cliente_Sexo VARCHAR(10),
  in C_Cliente_Pessoa_F_J VARCHAR(8),
  in C_Cliente_CPF_CNPJ VARCHAR(20),
  in C_Cliente_Nascimento DATE
  )
BEGIN

update TB_Cliente set  Cliente_Nome=C_Cliente_Nome,
					   Cliente_Telefone=C_Cliente_Telefone,
					   Cliente_Endereco=C_Cliente_Endereco,
                       Cliente_Numero=C_Cliente_Numero,
                       Cliente_Complemento=C_Cliente_Complemento,
					   Cliente_Bairro=C_Cliente_Bairro,
					   Cliente_Cidade=C_Cliente_Cidade,
                       Cliente_Estado=C_Cliente_Estado,
					   Cliente_CEP=C_Cliente_CEP,
					   Cliente_Sexo=C_Cliente_Sexo,
                       Cliente_Pessoa_F_J=C_Cliente_Pessoa_F_J,
					   Cliente_CPF_CNPJ=C_Cliente_CPF_CNPJ,
					   Cliente_Nascimento=C_Cliente_Nascimento									  
                       where IdTB_Cliente=C_IdTB_Cliente;  
END $$
Delimiter ;

Execução no Workbench unica q funciona

call alterarCliente(1,'maria',1243325,'endereco',100,'casa','bairro','cidade','SP',234234,'feminino','Juridica',4534,null);

execução no java

String sql = "{call alterarCliente(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
        try {
            CallableStatement stmt = connection.prepareCall(sql);
            stmt.setInt(1, c.getId_cliente());
            stmt.setString(2, c.getNome());
            stmt.setString(3, c.getTelefone());
            stmt.setString(4, c.getEndereco());
            stmt.setInt(5, c.getNumero());
            stmt.setString(6, c.getComplemento());
            stmt.setString(7, c.getBairro());
            stmt.setString(8, c.getCidade());
            stmt.setString(9, c.getEstado());
            stmt.setString(10, c.getCep());
            stmt.setString(11, c.getSexo());
            stmt.setString(12, c.getPessoa());
            stmt.setString(13, c.getCpf_cnpj());
            stmt.setObject(14, 20120119);

            stmt.executeUpdate();

            stmt.close();
        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null, erro);
            throw new RuntimeException(erro);
        }

conseguem me ajudar?

Qual o erro que acontece no java?

nenhum a procedure executa, mas nao altera os dados (esse é o erro)
alterei o topico agr ta melhor explicado

altere para

stmt.execute();
stmt.close();
connection.close();

encontrei o erro, depois de dias de procura kk, o erro simplesmente é q sempre estou passando como id do cliente valor nenhum(0), por isso nao alterava os cadastros

sempre me perguntei qual a diferença entre os dois? sabe me explicar?
por que os dois funcionam

Ele substitui os outros execute, é usado quando voce nao sabe qual o metodo é usado para executar as instrucoes sql, ele por retornar um boolean ou um int, o boolean true indica que ele possui um ResultSet é o false um int indicando quantas linhas foram afetadas no banco.