Ir ao conteúdo
  • Cadastre-se
mauro.speca

Mensagem de erro em Procedure com Transaction

Recommended Posts

Olá Pessoal, estou tendo uma certa dificuldade com uma procedure.

Ainda não tenho muita experiencia com procedures de mysql então se alguém puder me ajudar.

Tenho a seguinte procedure:

CREATE DEFINER=`user`@`%` PROCEDURE `InserirProduto`(pCodigo Varchar(8), pDescricao Varchar(60), pPrecoVenda FLOAT, pPrecoCompra FLOAT)

BEGIN

DECLARE erro INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET erro = 1;

START TRANSACTION;

INSERT

INTO Produto(Codigo, Descricao, PrecoVenda, PrecoCompra, Desabilitado)

VALUES (pCodigo, pDescricao, pPrecoVenda, pPrecoCompra,0);

INSERT INTO EstoqueProduto (IDproduto, QUantidadeDisponivel)

SELECT IDProduto, 0 FROM Produto where Codigo = pCodigo;

IF erro = 1 THEN

ROLLBACK;

ELSE

COMMIT;

END IF;

END

Que chamo pela função de php:

mysqli_query("CALL InserirProduto('1','1',99.00,20.00)") or die (mysqli_error());

Mas o que acontece, o campo cod da tabela é único, mas se eu tento adicionar um cod duplicado ele executa a query e não acusa erro nenhum, não insere na tabela mas tb não retorna erro nenhum.

Não sei se é possível mas estava pensando em talvez algo assim:

CREATE DEFINER=`user`@`%` PROCEDURE `InserirProduto`(pCodigo Varchar(8), pDescricao Varchar(60), pPrecoVenda FLOAT, pPrecoCompra FLOAT)

BEGIN

DECLARE erro INT DEFAULT 0;

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET erro = 1;

START TRANSACTION;

INSERT

INTO Produto(Codigo, Descricao, PrecoVenda, PrecoCompra, Desabilitado)

VALUES (pCodigo, pDescricao, pPrecoVenda, pPrecoCompra,0);

INSERT INTO EstoqueProduto (IDproduto, QUantidadeDisponivel)

SELECT IDProduto, 0 FROM Produto where Codigo = pCodigo;

IF erro = 1 THEN

ROLLBACK;

ShowMessage(mysql_error());

ELSE

COMMIT;

END IF;

END

Mas sinceramente sei que esse não é o caminho, queria alguma função do próprio mysql pra mostrar a mensagem de erro que causa a EXCEPTION

se alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×