Ir para conteúdo
Fórum Script Brasil

Mauro Speca

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Mauro Speca

Mauro Speca's Achievements

0

Reputação

  1. Oi Denis, obrigado pela ajuda, mas eu gostaria de retornar o erro em si, por exemplo se for duplicado retornar aquela mensagem "duplicate key". A mesma mensagem de erro que dá quando você executa um mysql_error() não sei se soube explicar
  2. 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
×
×
  • Criar Novo...