Preciso de Ajuda MySql (Basico)

Por favor, se alguém puder me ajudar, ficaria mto grato ! Estou com um problema em minha PROCEDURE e não faço ideia de como resolver…

o problema é o seguinte, eu tenho esse select:

SELECT
valor
FROM
cdr_metas
WHERE
INDICADOR = ‘OKC’ AND ANO LIKE ‘2012%’;

ele me retorna exatamente o que eu quero …

porém estava querendo colocar ele dentro de uma procedure para poder alterar os valores de INDICADOR e ANO, no começo estava achando que estava com um problema nos meus parâmetros, porém depois de muiiiiiiiiiiiiiiiito teste cheguei nesta situação:

CREATE DEFINER=root@localhost PROCEDURE viewMetas(tipo varchar(3),ano varchar(5))
BEGIN
SELECT
valor
FROM
cdr_metas
WHERE
INDICADOR = ‘OKC’ AND ANO LIKE ‘2012%’;
END

reparem que eu criei a procedure com os dois parâmetros que eu preciso, porém NÃO ESTOU NEM USANDO OS PARÂMETROS ! e ainda dei um ctrl + C ctrl + V no select que faz exatamente o que eu quero, maaaaaaas agora, dentro dessa procedure ele não me retorna mais o que eu quero ¬¬’ alguém sabe que diabos esta acontecendo ?? porque que quando eu chamo só o select ele me retorna um unico valor (valor onde o indicador é OKC e o ano é 2012) e quando ele está dentro da procedure ele me retorna todos os valores de OKC de qlqr ano, como se o LIKE nem existisse ¬¬’.

Se alguem puder me ajudar ai, ficaria mto grato, faz uns 2 dias já que estou tentando encontrar o problema e não acho nada parecido na web :?

Como vc salva esse “ano”? É a data completa ou simplesmente o ano?

Uma String ano :slight_smile:

o parameto do varchar esta de tamanho 5 pq eu estou passando no parametro o ano concatenado com %
por exemplo:

tipo varchar(3) = 'OKC’
ano varchar(5) = ‘2012%’

obrigado pela atenção -

Mas se vc salva só o ano (2010, 2011, 2012…) pq o like?

a sim, desculpa, não tinha entendido a pergunta …
na tabela o ano é um tipo date :slight_smile:

formatado assim: yyyy-mm-dd

Usa a função YEAR então, tira esse like…


WHERE
INDICADOR = ‘OKC’ AND YEAR(ANO) = ‘2012’;

Ve se muda alguma coisa.

vou testar aqui

Bom, deu certo, vou trocar meu LIKE por essa função YEAR …

porém ainda não resolveu meu problema =/

se eu user o SELECT:

SELECT
valor
FROM
cdr_metas
WHERE
INDICADOR = ‘OKC’ AND YEAR(ANO) = ‘2012’;

da certo.

mas se eu chamar a procedure:

DELIMITER $$

CREATE DEFINER=root@localhost PROCEDURE viewMetas(tipo varchar(3),ano varchar(4))
BEGIN
SELECT
valor
FROM
cdr_metas
WHERE
INDICADOR = ‘tipo’ AND YEAR(ANO) = ‘ano’;
END

call viewMetas(‘OKC’,‘2012’);

ele não me retorna nada ¬¬’

O parâmetro vc passa SEM as aspas:

CREATE DEFINER=root@localhost PROCEDURE viewMetas(tipo varchar(3),ano varchar(4))
BEGIN
SELECT
valor
FROM
cdr_metas
WHERE
INDICADOR = tipo AND YEAR(ANO) = ano;
END

uhuhuhuhu me desculpa a ignorância kkkkkkkkkkk

mas ainda sim o problema continua, devo estar cometendo algum erro besta como esse das aspas em mais algum lugar =/

pra ficar mais facil a compreenção do caso
vou postar aqui o print do select
e o print da procedure
e o que eles estão me retornando

Repare que no SELECT ele esta me retornando 98.00 que é o valor correspondente ao INDICADOR = ‘OKC’ e ano = ‘2012’

Repare aqui na PROCEDURE ele não me retorna valor nenhum =/.
se alguém souber onde eu estou errando, por favor, eu ficaria grato se me dissesse

UP -