Ir para conteúdo
Fórum Script Brasil
  • 0

duvida, rotina não insere registro usando stored procedure com mySQL


Porter

Pergunta

ola pessoal, na rotina abaixo, estou tentando incluir um fornecedor atravez de uma stored procedure chamada cad_for, mas quando chega na linha PreparedStatement, não executa, ocorre uma exceção, gostaria de saber como faço essa inserção usando o MySQL, já testei pelo Workbench a stored procedure e inseriu corretamente, vou colocar aqui tambem a stored procedure, obrigado.
public boolean incluirFor(Fornecedor objFor) throws Exception{
conecta = new ConexaoMySQL();
conecta.abrirConexao();
String sql = "exec cad_for ?,?,?,?,?,?,?,?,?,?";
PreparedStatement ps = conecta.getConnection().prepareStatement(sql); <--- essa linha não executa.
ps.setString(1, objFor.getEnd());
ps.setString(2, objFor.getRazsocial());
ps.setString(3, objFor.getNomefantasia());
ps.setString(4, objFor.getBairro());
ps.setString(5, objFor.getCidade());
ps.setString(6, objFor.getUf());
ps.setString(7, objFor.getCep());
ps.setString(8, objFor.getEmail());
ps.setString(9, objFor.getCnpj());
ps.setString(10,objFor.getIe());
if(ps.executeUpdate() > 0) {
sqlPessoa = "select max(id) as id from pessoas";
ps = (CallableStatement) conecta.getConnection().prepareStatement(sqlPessoa);
ResultSet rs = ps.executeQuery();
if(rs.next()){
pessoa_id = rs.getInt("id");
}
return true;
}
else{
return false;
}
}
}
DELIMITER $$
DROP PROCEDURE IF EXISTS cad_for $$
CREATE PROCEDURE cad_for(
IN p_endereco varchar(40),
IN p_razsocial varchar(40),
IN p_nomefantasia varchar(40),
IN p_bairro varchar(40),
IN p_cidade varchar(30),
IN p_uf varchar(2),
IN p_cep varchar(9),
IN p_email varchar(50),
IN p_cnpj varchar(14),
IN p_ie varchar(10)
)
BEGIN
DECLARE msg VARCHAR(1000) DEFAULT "sem mensagem";
DECLARE excecao SMALLINT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET excecao = 1;
START TRANSACTION;
INSERT INTO pessoas(endereco, razsocial, nomefantasia, bairro, cidade, uf, cep, email)
VALUES(p_endereco, p_razsocial, p_nomefantasia, p_bairro, p_cidade, p_uf, p_cep, p_email);
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao inserir na tabela de pessoas";
ROLLBACK;
ELSE
SELECT DISTINCT LAST_INSERT_ID() INTO @idPessoas FROM pessoas;
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao buscar o ultimo ID inserido em pessoas";
ROLLBACK;
ELSE
INSERT INTO fornecpj(cnpj, ie, pessoa_id) values(p_cnpj, p_ie, @idPessoas);
IF excecao = 1 THEN
SET msg = "ALERTA: Erro ao inserir na tabela de fornecpj";
ROLLBACK;
END IF;
END IF;
END IF;
IF excecao <> 1 THEN
COMMIT;
SET msg = "ALERTA: Registro Incluido com sucesso";
END IF;
SELECT msg AS msg;
END$$
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...