Procedure [RESOLVIDO]

7 respostas
gqferreira

Bom dia pessoal.

Estou aqui batendo cabeca um bom tempo com o mysql, procurei na sua documentacao e nao achei uma solucao. Preciso fazer uma procedure que receba um parametro e utilize-o com um 'Like', vejam umas das minhas tentativas:

CREATE PROCEDURE consultar_cliente_nome (nome_cliente VARCHAR(100))

BEGIN

	SELECT cliente.id,cliente.nome FROM cliente WHERE nome LIKE "'%" + nome_cliente + "%'";

END

$$

O problema esta na hora de juntar a variavel com o resto da sql.
Coisas que ja tentei:
trocar + por &
'%' + nome_cliente + '%'
'%" + nome_cliente + "%'
"%' + nome_cliente + '%" // assim tudo vira uma string so... inutil...

ja tentei tambem usar o CONCAT()... e nada ainda...

Agradeço pela ajuda. :thumbup:

7 Respostas

pmlm

Qual é o motor de BD? O caracter de concatenação varia.

Exeprimenta:

SELECT cliente.id,cliente.nome FROM cliente WHERE nome LIKE "'%" || nome_cliente || "%'";
gqferreira

pmlm:
Qual é o motor de BD? O caracter de concatenação varia.

Exeprimenta:

SELECT cliente.id,cliente.nome FROM cliente WHERE nome LIKE "'%" || nome_cliente || "%'";

Nao sei qual é o motor, estou tentando no mysql 5.1. Dessa forma também nao funcionou. :?

pmlm
SELECT cliente.id,cliente.nome FROM cliente WHERE nome LIKE concat('%',nome_cliente,'%');
gqferreira

Também dá pau… todos os parametros do CONCAT() deve ser literal, ou seja, devem estar entre ’ '. Usar o concat foi umas das coisas que mais insisti mais nao consegui.

pmlm

Mas nome_cliente é um CHAR, portanto também pode ser usado no concat. Não trocaste nenhuma letra ou nenhuma ’ ?

gqferreira

Realmente, dessa forma funcionou, foi uma distração minha não ter percebido. Lhe peço desculpas.

Y
Estava com o mesmo problema, deu certinho, Valeu!

Estava com o mesmo problema, deu certinho, Valeu!

Criado 18 de outubro de 2010
Ultima resposta 12 de nov. de 2011
Respostas 7
Participantes 3