none
DUVIDAS COM PROCEDURE RRS feed

  • Pergunta

  • Pessoal estou com a SP abaixo, estou tentando usar like pra buscar por qualquer palavra mais nao da certo.  o que esta errado nisso? ja coloquei o parametro na frente, atras e nada.


    ALTER PROCEDURE [dbo].[retornaClientes]

    @campo as varchar(50)

    AS
    BEGIN
        SELECT idcliente, Convert(varchar(10),datacad,103) as dt,
     nome, email from clientes
    where  like @campo +'%'
    order by nome
    END
    quinta-feira, 13 de dezembro de 2007 15:52

Respostas

  •  

    Lourival,

     

    Agora deu pra entender, faz assim, primeiro você arruma a variável para depois fazer a consulta:

     

    SET @campo = '%' + @campo + '%'

     

     

    Basta colocar % dos dois lados.

     

     

     

    Abraço!!!

    quinta-feira, 13 de dezembro de 2007 16:54
  • Lourival,

     

    De uma olhada no exemplo e veja se ele te ajuda.

     

     

    CREATE TABLE #USUARIO

    (

    NOME VARCHAR(100)

    )

    INSERT INTO #USUARIO VALUES('ANA MARCIA')

    INSERT INTO #USUARIO VALUES('MARIA ANGELICA')

    INSERT INTO #USUARIO VALUES('MARIA ANA')

    INSERT INTO #USUARIO VALUES('AUGSUTA ANA MARIA')

    INSERT INTO #USUARIO VALUES('SERGIO ABREU')

    INSERT INTO #USUARIO VALUES('MARCIO LUIZ')

     

    DECLARE @NOME AS VARCHAR(10)

    SET @NOME = 'ANA'

    SELECT * FROM #USUARIO

    WHERE NOME LIKE '%' + @NOME + '%'

    DROP TABLE #USUARIO

     

     

    Abraço,

     

    chapolin.rio@gmail.com

     

     

    quinta-feira, 13 de dezembro de 2007 16:59

Todas as Respostas

  •  

    Olá!!!

     

    Que informação será passada no @campo?? É a coluna que será pesquisada?? E, por qual palavra que será pesquisada??

     

    A estrutura correta do LIKE seria esta:

     

    WHERE NomeDaColuna LIKE @TermoDePesquisa

     

     

    Se você quiser fazer uma consulta de forma dinâmica, escolhendo por qual coluna filtrar, recomendo usar o sp_executesql

     

     

    Abraço

    quinta-feira, 13 de dezembro de 2007 16:00
  • Olá Lourival,

     

    Quando se utiliza alguns WildCards como %, _, ?, \, etc é preciso alguns cuidados.

    Segundo o Books OnLine, a sintaxe correta pode ser demonstrada no exemplo abaixo:

     

    Using a simple procedure with wildcard parameters

     

    CREATE PROCEDURE HumanResources.uspGetEmployees2

    @LastName nvarchar(50) = N'D%',

    @FirstName nvarchar(50) = N'%'

    AS

    SELECT FirstName, LastName, JobTitle, Department

    FROM HumanResources.vEmployeeDepartment

    WHERE FirstName LIKE @FirstName

    AND LastName LIKE @LastName;

     

    [ ]s,

     

    Gustavo

     

     

     

    quinta-feira, 13 de dezembro de 2007 16:05
  • Boa tarde Lourival,

     

    Não esta faltando o campo no where que será igualado a instrução LIKE??

     

    ALTER PROCEDURE [dbo].[retornaClientes]

    @campo as varchar(50)

    AS

    BEGIN

    SELECT idcliente, Convert(varchar(10),datacad,103) as dt,

    nome, email from clientes

    where CAMPO DA TABELA like @campo +'%'

    order by nome

    END

     

     

    Abraço

    quinta-feira, 13 de dezembro de 2007 16:10
  • Entao chapolin nao coloquei ai o nome do campo . mais coloquei sim.. ele até traz dados com essa consulta, mais eu queria saber como trazer dados por qualquer palavra em qualquer lugar que ela esteja .no inicio meio ou fim.
    quinta-feira, 13 de dezembro de 2007 16:50
  •  

    Lourival,

     

    Agora deu pra entender, faz assim, primeiro você arruma a variável para depois fazer a consulta:

     

    SET @campo = '%' + @campo + '%'

     

     

    Basta colocar % dos dois lados.

     

     

     

    Abraço!!!

    quinta-feira, 13 de dezembro de 2007 16:54
  • Lourival,

     

    De uma olhada no exemplo e veja se ele te ajuda.

     

     

    CREATE TABLE #USUARIO

    (

    NOME VARCHAR(100)

    )

    INSERT INTO #USUARIO VALUES('ANA MARCIA')

    INSERT INTO #USUARIO VALUES('MARIA ANGELICA')

    INSERT INTO #USUARIO VALUES('MARIA ANA')

    INSERT INTO #USUARIO VALUES('AUGSUTA ANA MARIA')

    INSERT INTO #USUARIO VALUES('SERGIO ABREU')

    INSERT INTO #USUARIO VALUES('MARCIO LUIZ')

     

    DECLARE @NOME AS VARCHAR(10)

    SET @NOME = 'ANA'

    SELECT * FROM #USUARIO

    WHERE NOME LIKE '%' + @NOME + '%'

    DROP TABLE #USUARIO

     

     

    Abraço,

     

    chapolin.rio@gmail.com

     

     

    quinta-feira, 13 de dezembro de 2007 16:59
  • Ola Alexandre fiz assim mais ainda nao trouxe resultados.

    CREATE PROCEDURE [dbo].[usp_RetornaTitulo]
    (
        @Titulo as varchar(300)

    )
    AS
    BEGIN

    SET @Titulo = '%' + @Titulo + '%'
       SELECT Codigo, Titulo, nome FROM Artigos
       
        WHERE Titulo = @Titulo
    END

    quinta-feira, 13 de dezembro de 2007 17:01
  • Obrigado amigos.. deu certo..

    todas as respostas deram certo.

    abs..
    quinta-feira, 13 de dezembro de 2007 17:08
  • Lourival,

     

    Obrigado pelo retorono. Quando precisar, estamos aí.

     

    Abraço,

     

    chapolin.rio@gmail.com

     

    quinta-feira, 13 de dezembro de 2007 17:10
  •  

    Lourival,

     

    Legal. Qualquer coisa estamos aqui.

     

     

    Abração

    quinta-feira, 13 de dezembro de 2007 17:14