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
Pergunta
Mauro Speca
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:
Que chamo pela função de php: 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: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
Editado por Mauro SpecaLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados