Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sempre imprime 'Produto barato'. Onde eu errei?

CREATE DEFINER=`root`@`localhost` PROCEDURE `acha_status_preco`(vProduto VARCHAR(50))
BEGIN
    DECLARE vPreco FLOAT;
    DECLARE vMensagem VARCHAR(30);
    SELECT PRECO_DE_LISTA FROM tabela_de_produtos 
    WHERE codigo_do_produto = vProduto;    
    IF vPreco >= 12 THEN
    SET vMensagem = 'PRODUTO CARO.';
    ELSEIF vPreco >= 7 AND vPreco < 12 THEN
    SET vMensagem = 'PRODUTO EM CONTA.';
    ELSE SET vMensagem = 'PRODUTO BARATO.';
    END IF;
    SELECT vMensagem;
END

De verdade, ja revisei o código e não encontro o erro.Pego produtos cujo preço é maior que R$12 e mesmo assim imprime 'barato'.

2 respostas
solução!

Oii Diego, tudo certinho?

Parece que você esqueceu de atribuir o valor da consulta ao vPreco. No seu código, você está fazendo a consulta, mas o resultado não está sendo armazenado em lugar nenhum.

Para corrigir isso, você precisa usar a cláusula INTO para armazenar o resultado da sua consulta na variável vPreco, assim:

 SELECT PRECO_DE_LISTA INTO vPreco FROM tabela_de_produtos 

Às vezes uma palavrinha faz a gente quebrar muito a cabeça, né? Hehe. Espero que dê certo! Qualquer coisa me avisa.

Abração.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Nossa, muito muito obrigado Lari. Me sinto burrinho agora. haha Abração!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software