Diego R. Martins Postado Julho 24, 2014 Denunciar Share Postado Julho 24, 2014 Estou tendo um problema estranho com um if dentro de um procedure. No momento em que testo, mando as seguinte informação para teste_estoque: call teste_estoque (1, curdate(), 1); Em quantidade.estoque tenho 23, porém, mesmo assim, ele não chama a outra store procedure... DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `teste_estoque`(in id_item int, in data_saida date, in quantidade int) BEGIN if (select quantidade from estoque where estoque.id_item = id_item) > quantidade then call out_dados (id_item, data_saida, quantidade); else select 'Erro'; end if; END P.S. Se eu coloco qual número menor do que 1 em 'quantidade' na linha do if, ele funciona... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 24, 2014 Denunciar Share Postado Julho 24, 2014 Faça assim:DECLARE qtd (mesmo tipo do campo quantidade); SET qtd = (select quantidade from estoque where estoque.id_item = id_item); if qtd > quantidade then Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Diego R. Martins Postado Julho 25, 2014 Autor Denunciar Share Postado Julho 25, 2014 (editado) Olá, agradeço a ajuda, mas sua sugestão não funcionou, porém foi graças a ela que encontrei o erro. Por algum motivo o valor 'quantidade' dentro do select estava pegando o valor 'quantidade' vindo do chamado da procedure. Substitui o 'quantidade' por 'estoque.quantidade' e tudo funcionou perfeitamente. CREATE DEFINER=`root`@`localhost` PROCEDURE `teste_estoque`(in id_item smallint, in data_saida date, in quantidade int) BEGIN DECLARE qtd_estoque int; set qtd_estoque = (select estoque.quantidade from estoque where estoque.id_item = id_item); if qtd_estoque > quantidade then call out_dados (id_item, data_saida, quantidade); else select 'Erro'; end if; select qtd_estoque, quantidade; END Brigado! Editado Julho 25, 2014 por Diego R. Martins Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Diego R. Martins
Estou tendo um problema estranho com um if dentro de um procedure.
No momento em que testo, mando as seguinte informação para teste_estoque:
call teste_estoque (1, curdate(), 1);
Em quantidade.estoque tenho 23, porém, mesmo assim, ele não chama a outra store procedure...
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.