Jump to content
Fórum Script Brasil
  • 0

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


Porter
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...