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: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=5)
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: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=5)
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.
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’
![](http://desmond.imageshack.us/Himg152/scaled.php?server=152&filename=selectx.jpg&res=landing)
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 –
![](http://desmond.imageshack.us/Himg33/scaled.php?server=33&filename=procedure.jpg&res=landing)